Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Ocultar registros con saldo cero (https://www.clubdelphi.com/foros/showthread.php?t=92955)

Tecnofacil 27-03-2018 15:19:33

Ocultar registros con saldo cero
 
Buenos días. Estoy liado en una consulta MySQL, muestro los totales de una tabla CtaCte con algo asi
Código SQL [-]
SELECT
ctacte.pista,
proveedores.proveedor,
sum(ctacte.haber) as Haber,
sum(ctacte.debe) as Debe,
sum(ctacte.haber) + sum(ctacte.debe) as Saldo
FROM
ctacte
INNER JOIN proveedores ON ctacte.pista = proveedores.pista
WHERE
ctacte.liquidado = 0
GROUP BY
ctacte.pista
order by proveedor
Donde "Pista" es el numero de proveedor.
Obtengo algo asi

PISTA PROVEEDOR HABER DEBE SALDO
27845 DANIEL $1250 $1000 $250
84589 OSCAR $1250 $1250 $0

Lo que me piden los jefes es que esos registros cuyo saldo es cero no se muestren

probé hacer el calculo del saldo en el where pero no me permite.
Tambien existe la posibilidad de ocultar eso desde Fastreport pero no pude hacerlo en ninguno de los casos

ecfisa 27-03-2018 15:37:32

Cita:

Empezado por Tecnofacil (Mensaje 525346)
...
Lo que me piden los jefes es que esos registros cuyo saldo es cero no se muestren

No uso MySQL, pero en Firebird funciona agregando la condición:
Código SQL [-]
...
WHERE (CTACTE.SALDO > 0) AND (CTACTE.LIQUIDADO = 0)  /* o simplemente: (SALDO > 0) AND ... */
...

Saludos :)

aposi 27-03-2018 16:30:50

Prueba con el having
Código SQL [-]

SELECT ctacte.pista, proveedores.proveedor, 
sum(ctacte.haber) as Haber, 
sum(ctacte.debe) as Debe, 
sum(ctacte.haber) + sum(ctacte.debe) as Saldo
 FROM ctacte 
INNER JOIN proveedores ON ctacte.pista = proveedores.pista 
WHERE ctacte.liquidado = 0 
GROUP BY ctacte.pista
having (sum(ctacte.haber) + sum(ctacte.debe)) <> 0
 order by proveedor

orodriguezca 27-03-2018 18:21:48

Coincido en sugerir el uso de HAVING. De otra parte creo que la columna proveedores.proveedor debería estar incluida en el Group By:

Código SQL [-]
SELECT ctacte.pista, proveedores.proveedor, 
sum(ctacte.haber) as Haber, 
sum(ctacte.debe) as Debe, 
sum(ctacte.haber) + sum(ctacte.debe) as Saldo
 FROM ctacte 
INNER JOIN proveedores ON ctacte.pista = proveedores.pista 
WHERE ctacte.liquidado = 0 
GROUP BY ctacte.pista, proveedores.proveedor
having (sum(ctacte.haber) + sum(ctacte.debe)) <> 0
 order by proveedor

Tecnofacil 27-03-2018 21:12:26

ecfisa, funcionaria si el campo "Saldo" fuera un campo físico en la tabla, pero al ser un campo calculado no me lo permite
No había pensado en having, ahora veré.

orodriguezca: tienes razón.


La franja horaria es GMT +2. Ahora son las 21:54:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi