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

consulta cachimbona SUM WHERE

Estas en el tema de consulta cachimbona SUM WHERE en el foro de Mysql en Foros del Web. Necesito sacar un valor X de la base de datos de un cliente, si el cliente cumple un requisito, si tiene acumulado por ejemplo 2000 ...
  #1 (permalink)  
Antiguo 07/09/2012, 11:16
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 2 meses
Puntos: 7
consulta cachimbona SUM WHERE

Necesito sacar un valor X de la base de datos de un cliente, si el cliente cumple un requisito, si tiene acumulado por ejemplo 2000 pesos, en los ultimos 15 dias en compras.

del momento tengo la siguiente consulta, pero no funciona, dice que "invalid used of group function"
Código SQL:
Ver original
  1. SELECT COUNT(e.`IdTransactions`) AS `numOfTransactions`
  2. FROM compras e
  3. WHERE e.`IdClient` = '540'
  4. AND SUM(e.`amount` + e.`tax`) >= 2000.00
  5. AND e.`date` BETWEEN '2012-08-23' AND '2012-09-07'

le he puesto GROUP BY e.`IdClient`, y otro q otro garabato para ver si funciona, yo le encuentro logica, pero al parecer la funcion SUM no se puede usar en la capsula WHERE, eso he concluido, si es el caso tendria que buscar alternativas, alguna solucion?
  #2 (permalink)  
Antiguo 07/09/2012, 11:45
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: consulta cachimbona SUM WHERE

SUM() es una función agrupada, y ningún DBMS admite funciones de agrupación en el WHERE.
Para poder solventar eso existe el HAVING:
Código MySQL:
Ver original
  1. SELECT COUNT(e.`IdTransactions`) `numOfTransactions`
  2. FROM compras e
  3. WHERE e.`IdClient` = '540'
  4.     AND e.`date` BETWEEN '2012-08-23' AND '2012-09-07'
  5. HAVING SUM(e.`amount` + e.`tax`) >= 2000.00
__________________
¿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 07/09/2012, 17:34
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: consulta cachimbona SUM WHERE

gracias por tu respuesta, soluciona parcialmente mi problema, la situacion se puede complicar un poco mas, imaginando que puede puede haber mas de un rango

2000 en 15, o 3000 en 30 dias

pueden ser dos, tres cuatro, los q se deseen
  #4 (permalink)  
Antiguo 07/09/2012, 18:07
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: consulta cachimbona SUM WHERE

Entonces deberás implementar la construcción dinámica de las consultas, o generar los UNIONs adecuados.
Parte de eso lo deberás hacer por programación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/09/2012, 18:14
Avatar de rudy69  
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: consulta cachimbona SUM WHERE

Gracias, mi idea era hacer todo en una sola consulta, pero todo indica que es mejor hacer cada consulta por separado debido a que los rangos se pueden confundir y no saber en cual hubicar exactamente a un cliente, gracias por todo.

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 07:57.