Ver Mensaje Individual
  #12 (permalink)  
Antiguo 24/04/2012, 16:39
computer_si
 
Fecha de Ingreso: febrero-2011
Mensajes: 85
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Consulta selectiva

Hola Leonardo

Ya cheque el query como me lo posteaste, y en efecto la ref y el saldo si me los da correctos, en donde tengo problemas es al agregar la columna de tipo en teoria me debera de salir "1", por que es el saldo de una ref A5 de tipo 1, pero me arroja el siguiente resultado:

A2|200|1
A3|300|1
A4|500|1
A5|1000|2
A6|500|1

Me imagino que el barrido es el siguiente, primero suma todo lo que encuentra con 1, en ese punto tipMov todavia es 1, despues suma lo que encuentra con 2 y en este punto tipMov ya vale 2, es por eso que tipMov siempre me sale como 2 aunque la suma de tipMov1 sea mayor que tipMov 2.

Es correcto??

Modifique de esta forma la consulta y no me funciona

"SELECT ref, IF( saldo > 0,1,2) tMov, (IFNULL((SELECT SUM(T2.imp) FROM cuentas T2 WHERE T1.ref = T2.ref AND T2.tipMov = 1), 0) - IFNULL((SELECT SUM(T2.imp) FROM cuentas T2 WHERE T1.ref = T2.ref AND T2.tipMov = 2), 0)) saldo FROM cuentas T1 GROUP BY ref HAVING saldo != 0";

Pero de esta forma la consulta si me funciona, (sera muy ineficiente de esta forma??)

"SELECT ref, IF((IFNULL((SELECT SUM(T2.imp) FROM cuentas T2 WHERE T1.ref = T2.ref AND T2.tipMov = 1), 0) - IFNULL((SELECT SUM(T2.imp) FROM cuentas T2 WHERE T1.ref = T2.ref AND T2.tipMov = 2), 0)) > 0,1,2) tMov, (IFNULL((SELECT SUM(T2.imp) FROM cuentas T2 WHERE T1.ref = T2.ref AND T2.tipMov = 1), 0) - IFNULL((SELECT SUM(T2.imp) FROM cuentas T2 WHERE T1.ref = T2.ref AND T2.tipMov = 2), 0)) saldo FROM cuentas T1 GROUP BY ref HAVING saldo != 0";

A2|1|200
A3|1|300
A4|1|500
A5|1|1000
A6|1|500

Saludos nuevamente

Última edición por computer_si; 24/04/2012 a las 17:10