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

[SOLUCIONADO] Problemas con SUM() y SELECT

Estas en el tema de Problemas con SUM() y SELECT en el foro de Mysql en Foros del Web. Buenas tardes. Tengo una consulta atravesada que me está rompiendo la cabeza y me obliga a tirar de php para lograr algo que creo que ...
  #1 (permalink)  
Antiguo 17/02/2011, 06:13
Avatar de Tollelle  
Fecha de Ingreso: enero-2005
Mensajes: 64
Antigüedad: 19 años, 10 meses
Puntos: 0
Información Problemas con SUM() y SELECT

Buenas tardes.

Tengo una consulta atravesada que me está rompiendo la cabeza y me obliga a tirar de php para lograr algo que creo que se puede hacer directamente en el SELECT de mysql.

Código MySQL:
Ver original
  1. SELECT documento,SUM(pago) as pagotot FROM tabla WHERE fecha>'$fecha_promo' AND SUM(pago)>'$saldo_promo' GROUP BY documento

si quito el AND SUM(pago)>'$saldo_promo' no hay problema pero no me sirve...

Me tira el siguiente error: "Invalid use of group function"

Mi idea es agrupar por documento y sumar los pagos segun documento y que luego me condicione la búsqueda según fecha e intervalos de saldos totales...

¿alguien puede arrojarme un poco de luz?

Muchas gracias de antenano ;)
  #2 (permalink)  
Antiguo 17/02/2011, 06:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problemas con SUM() y SELECT

No se puede usar funciones agregadas en un WHERE, es decir que no puedes usar MIN(), MAX(), SUM(), AVG() ni nada parecido. Es una restricción general de los DBMS porque una función agregada sólo puede aplicarse sobre resultados finales, que son los que se obtienen de ella, mientras que el WHERE se aplica a cada registro individualmente. SOn lógicas incompatibles.
Para usar una condición a cumplir obtenida por SUM() debes hacerlo con HAVING:
Código MySQL:
Ver original
  1.     documento,
  2.     SUM(pago) pagotot
  3.     tabla
  4.     fecha>'$fecha_promo'
  5. GROUP BY documento
  6. HAVING pagotot > '$saldo_promo';
__________________
¿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 17/02/2011, 06:37
Avatar de Tollelle  
Fecha de Ingreso: enero-2005
Mensajes: 64
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: Problemas con SUM() y SELECT

Muchas gracais gnzsoloyo desconocía el uso de HAVING muy útil.

Gracias de verdad ;)

Etiquetas: 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 21:17.