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

[SOLUCIONADO] MySQL - Agrupar por días incluyendo valores ceros

Estas en el tema de MySQL - Agrupar por días incluyendo valores ceros en el foro de Mysql en Foros del Web. Hola, Quizás el título no sea muy descriptivo... les explico mi problema. Tengo una tabla "users" con un campo "approved" y necesito una lista del ...
  #1 (permalink)  
Antiguo 31/05/2015, 20:56
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 22 años, 4 meses
Puntos: 0
MySQL - Agrupar por días incluyendo valores ceros

Hola,
Quizás el título no sea muy descriptivo... les explico mi problema.
Tengo una tabla "users" con un campo "approved" y necesito una lista del número de usuarios aprobamos en los últimos 15 días.
Tengo la siguiente query:

Código MySQL:
Ver original
  1. SELECT DAY(`approved`) AS `day`, COUNT(`id_user`) AS `total`
  2. FROM  `users`
  3. WHERE `approved` >= DATE_ADD( CURDATE( ) , INTERVAL -20 DAY )
  4. GROUP BY DAY( `approved`)
[/CODE]

Pero con eso obtengo sólo los días en que hubo aprobados, si no hubo usuarios entonces se salta el día... se obtiene éste resultado:
Código:
day  total
11   3
12   1
13   1
16   2
17   1
19   5
20   4
Pero yo necesito éste:
Código:
day  total
11   3
12   1
13   1
14   0
15   0
16   2
17   1
18   0
19   5
20   4
¿Qué debo cambiar?
Saludos y gracias por el apoyo!!!!
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx

Última edición por gnzsoloyo; 31/05/2015 a las 21:09
  #2 (permalink)  
Antiguo 31/05/2015, 21:12
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, 4 meses
Puntos: 2658
Respuesta: MySQL - Agrupar por días incluyendo valores ceros

No puedes hacerlo en una sola tabla.
Los DBMS trabajan con datos que existan, no con datos imaginarios. Si no tienes otra tabla e donde sacar los días, no hay de donde construir el dato faltante.
Usualmente tu problema se resuelve programáticamente, en la vista o formulario donde los datos se muestran, agregando líneas visuales con los días que no tienen datos, y mostrando ceros. Sólo usas la consulta para poner los datos de los días que SI los tienen.

¿Se entiende?

En SQL, si el dato no existe, no se puede mostrar nada, si la tabla solo almacena datos existentes.
__________________
¿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 01/06/2015, 04:10
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 22 años, 4 meses
Puntos: 0
Respuesta: MySQL - Agrupar por días incluyendo valores ceros

Gracias por tu respuesta... entonces tendré que hacer un ciclo en PHP detectando los días faltantes. Saludos.
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #4 (permalink)  
Antiguo 01/06/2015, 06:44
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, 4 meses
Puntos: 2658
Respuesta: MySQL - Agrupar por días incluyendo valores ceros

Exacto....
De lo contrario deberías crear un SP para constrruir una tabla de días y luego la consulta, lo que terminaría siendo más enredado...
__________________
¿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: agrupar, bases-de-datos-general, select, tabla
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 09:23.