Consulta Mysql
-
- Posts: 3
- Joined: Mon Oct 23, 2017 1:47 pm
Re: Consulta Mysql
A função having funciona como um filtro, ela vai percorrer toda tabela, ela cria uma especie de tabela temporária, em tabelas muito extensas não é recomendável o uso.
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Consulta Mysql
carlos moc wrote:A função having funciona como um filtro, ela vai percorrer toda tabela, ela cria uma especie de tabela temporária, em tabelas muito extensas não é recomendável o uso.
Gracias, Carlos.La función HAVING funciona como un filtro, que va a recorrer toda la tabla, crea una especie de tabla temporal, en tablas muy extensas no se recomienda el uso.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Consulta Mysql
SELECT numdoc,fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Debes tener indice por _, (Si fuese SQLSERVER rechazará la sentencia), todos _ del SELECT deben estar en el GROUP BY excepto las funciones
SELECT numdoc,fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Recomiendo
SELECT fechemis,numdoc, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis,numdoc
HAVING SUM(debe-haber) > 0;
Debes tener indice de fechemis,numdoc,
Si solo requiere las fechas,
SELECT fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis
HAVING SUM(debe-haber) > 0;
Indice de fechemis
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Debes tener indice por _, (Si fuese SQLSERVER rechazará la sentencia), todos _ del SELECT deben estar en el GROUP BY excepto las funciones
SELECT numdoc,fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Recomiendo
SELECT fechemis,numdoc, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis,numdoc
HAVING SUM(debe-haber) > 0;
Debes tener indice de fechemis,numdoc,
Si solo requiere las fechas,
SELECT fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis
HAVING SUM(debe-haber) > 0;
Indice de fechemis
Re: Consulta Mysql
SELECT numdoc,fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Debes tener indice por _, (Si fuese SQLSERVER rechazará la sentencia), todos _ del SELECT deben estar en el GROUP BY excepto las funciones
SELECT numdoc,fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Recomiendo
SELECT fechemis,numdoc, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis,numdoc
HAVING SUM(debe-haber) > 0;
Debes tener indice de fechemis,numdoc,
Si solo requiere las fechas,
SELECT fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis
HAVING SUM(debe-haber) > 0;
Indice de fechemis
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Debes tener indice por _, (Si fuese SQLSERVER rechazará la sentencia), todos _ del SELECT deben estar en el GROUP BY excepto las funciones
SELECT numdoc,fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) > 0;
Recomiendo
SELECT fechemis,numdoc, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis,numdoc
HAVING SUM(debe-haber) > 0;
Debes tener indice de fechemis,numdoc,
Si solo requiere las fechas,
SELECT fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY fechemis
HAVING SUM(debe-haber) > 0;
Indice de fechemis
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Consulta Mysql
Asi es, Juan. Tengo indices por cada uno de _.jnavas wrote:Debes tener indice por _,
Gracias Juan, bajó a 3.076 segundos.jnavas wrote:SELECT numdoc,fechemis, sum(debe) debitos, sum(haber) creditos, sum(debe-haber) diferencia
FROM facturas
GROUP BY numdoc,fechemis
HAVING SUM(debe-haber) <> 0;
Lo que no entiendo es por qué se tiene que agregar al GROUP BY, el campo fechemis. (además del campo numdoc)
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Consulta Mysql
Francisco
Saludos, ayer respondí, no veo la respuesta en el foro.
Gracias Juan, bajó a 3.076 segundos.
Lo que no entiendo es por qué se tiene que agregar al GROUP BY, el campo fechemis. (además del campo numdoc)
Saludos.
Considero que numdoc no es necesario utilizarlo en el group by
Si necesitas presentar un resultado acumulado por cuenta (Tipo Mayor analitico) de una cuenta o documento especifico. deberás agrupar solo por fecha,
Group by tiene sus reglas, mi aplicación trabaja con MySQL y SQLServer y SQL-Server es muy rígido con el group By, recomiendo seguir la siguiente regla.
SELECT CAMPO1,CAMPO2,SUM(A),SUM(B),MIN(A),MIN(B)
FROM TABLA
WHERE CAMPO3="XVALOR"
GROUP BY CAMPO1,CAMPO2
ORDER BY CAMPOX
La optimización dependerá del indices en CAMPO1,CAMPO2 y CAMPO3
Si deseas publica en formato excel que deseas mostrar y te daré mis recomendaciones, si puedes una copia de la tablas para evaluar su rendimiento, podrás enviarla a mi correo jnavas@datapronet.com y luego publicaremos en este sitio las recomendaciones.
Saludos, ayer respondí, no veo la respuesta en el foro.
Gracias Juan, bajó a 3.076 segundos.
Lo que no entiendo es por qué se tiene que agregar al GROUP BY, el campo fechemis. (además del campo numdoc)
Saludos.
Considero que numdoc no es necesario utilizarlo en el group by
Si necesitas presentar un resultado acumulado por cuenta (Tipo Mayor analitico) de una cuenta o documento especifico. deberás agrupar solo por fecha,
Group by tiene sus reglas, mi aplicación trabaja con MySQL y SQLServer y SQL-Server es muy rígido con el group By, recomiendo seguir la siguiente regla.
SELECT CAMPO1,CAMPO2,SUM(A),SUM(B),MIN(A),MIN(B)
FROM TABLA
WHERE CAMPO3="XVALOR"
GROUP BY CAMPO1,CAMPO2
ORDER BY CAMPOX
La optimización dependerá del indices en CAMPO1,CAMPO2 y CAMPO3
Si deseas publica en formato excel que deseas mostrar y te daré mis recomendaciones, si puedes una copia de la tablas para evaluar su rendimiento, podrás enviarla a mi correo jnavas@datapronet.com y luego publicaremos en este sitio las recomendaciones.
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Consulta Mysql
Juan, aqui tienes.
https://www.4shared.com/photo/1VnahMMgf ... encia.html
https://www.4shared.com/photo/1VnahMMgf ... encia.html
Code: Select all
oServer:Query("CREATE TABLE IF NOT EXISTS facturas(" +;
"idcomprob INT(12) NOT NULL DEFAULT 0 ," +;
"NUMCD INT(12) NOT NULL DEFAULT 0 COMMENT 'No. de cdiario'," +;
"NUMDOC INT(12) NOT NULL DEFAULT 0 COMMENT 'No. de documento'," +;
"TD CHAR(2) NOT NULL DEFAULT '' COMMENT 'Tipo de documento'," +;
"FECHEMIS DATE NULL COMMENT 'Fecha de emision'," +;
"CODICONT VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'Codigo Contable'," +;
"NOMBRE VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'Nombre de la Cuenta'," +;
"BENEFI VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'Nombre beneficiario'," +;
"CONCEPTO VARCHAR(60) NOT NULL DEFAULT '' COMMENT 'concepto especifico'," +;
"DEBE NUMERIC(15,2) NOT NULL DEFAULT 0.00 COMMENT 'Mov del debe'," +;
"HABER NUMERIC(15,2) NOT NULL DEFAULT 0.00 COMMENT 'Mov del haber'," +;
"SALDO NUMERIC(15,2) NOT NULL DEFAULT 0.00 COMMENT 'Saldo'," +;
"TCAMBIO NUMERIC(15,4) NOT NULL DEFAULT 0.0000 COMMENT 'Tcambio US$'," +;
"DOLARES NUMERIC(15,2) NOT NULL DEFAULT 0.00 COMMENT 'Ck en dolares'," +;
"PSPTO VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'Cta Presupuesto'," +;
"CONCEPTG1 VARCHAR(92) NOT NULL DEFAULT '' COMMENT 'concepto'," +;
"CONCEPTG2 VARCHAR(92) NOT NULL DEFAULT '' COMMENT 'concepto'," +;
"CONCEPTG3 VARCHAR(92) NOT NULL DEFAULT '' COMMENT 'concepto'," +;
"CONCEPTG4 VARCHAR(92) NOT NULL DEFAULT '' COMMENT 'concepto'," +;
"CONCEPTG5 VARCHAR(92) NOT NULL DEFAULT '' COMMENT 'concepto'," +;
"CONCEPTG6 VARCHAR(92) NOT NULL DEFAULT '' COMMENT 'concepto'," +;
"CODIBANCOS VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'Codigo de bancos-cks'," +;
"IMPORT VARCHAR(10) NOT NULL DEFAULT '' COMMENT 'De donde se importa'," +;
"APLICADOC VARCHAR(20) NOT NULL DEFAULT '' COMMENT 'Doc aplicado'," +;
"NUMEGRESO INT(10) NOT NULL DEFAULT 0 COMMENT 'No. de egreso'," +;
"USUARIO VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'quien lo graba'," +;
"MODIFICADO VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'quien lo modifica'," +;
"INDEX i_numdoc (numdoc),"+;
"INDEX i_codicont (codicont),"+;
"INDEX i_benefi (benefi),"+;
"INDEX i_fechemis (fechemis))"+;
"ENGINE = InnoDB ;")
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql