Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Select SUM con condición de ese SUM

Estas en el tema de Select SUM con condición de ese SUM en el foro de Mysql en Foros del Web. Hola, Quería hacer la siguiente consulta pero me devuelve un error. Tengo una tabla con idpersonas, saldo y operación (si la operación es de un ...
  #1 (permalink)  
Antiguo 24/02/2011, 06:29
 
Fecha de Ingreso: agosto-2010
Mensajes: 28
Antigüedad: 13 años, 8 meses
Puntos: 0
Select SUM con condición de ese SUM

Hola,

Quería hacer la siguiente consulta pero me devuelve un error.

Tengo una tabla con idpersonas, saldo y operación (si la operación es de un tipo el saldo es positivo y es negativo si es de otro)

Ejemplo: tabla cuentas
idpersona saldo operacion
1 100 entrar
2 50 entrar
1 -100 salir
2 -49 salir

y quiero hacer una consulta en la que me muestre solamente los que se quedan con saldo a cero

Lo que he hecho es:

Select idpersona Sum(saldo) as total from cuentas where total = 0 group by idpersona

pero me dice que estoy utilizando mal el group by.

¿Alguna sugerencia?
  #2 (permalink)  
Antiguo 24/02/2011, 06:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Select SUM con condición de ese SUM

Código MySQL:
Ver original
  1.   idpersona,
  2.   Sum(saldo) total
  3. FROM cuentas
  4. HAVING total = 0
  5. GROUP BY idpersona;
Ningún DBMS te permite usar los alias en el WHERE, y tampoco se pueden usar en él las funciones agrupadas (como SUM())). Allí sólo se pueden poner los nombres reales de los campos y los alias de las tablas.
No se pueden usar en el WHERE las funciones agrupadas porque el WHERE opera sobre cada registro, y la función agrupada por el conjunto total de resultado. Son conceptos incompatibles.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/02/2011, 01:46
 
Fecha de Ingreso: agosto-2010
Mensajes: 28
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Select SUM con condición de ese SUM

Muchas gracias, entendido el concepto. La duda que tengo ahora es que, si las personas no tienen transacciones de entrada o salida no me van a salir en la consulta pero en la tabla personas hay personas que me gustaría, se listasen también como con saldo 0. ¿Alguna idea?
  #4 (permalink)  
Antiguo 25/02/2011, 05:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Select SUM con condición de ese SUM

Para eso existe el LEFT JOIN, y en tu caso habría que hacer el JOIN partiendo de la tabla "personas".
Suponiendo que "cuentas" y "personas" tienen el campo "idpersona", sería mas o menos así:
Código MySQL:
Ver original
  1.   idpersona,
  2.   nombre_persona,
  3.   Sum(saldo) total
  4. FROM personas LEFT JOIN cuentas USING(idpersona)
  5. HAVING total = 0
  6. GROUP BY idpersona;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: condición, select, sum
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:32.