Estoy escribiendo una consulta para devolver la cantidad de publicaciones de blog escritas por día durante un cierto período de tiempo. Mi problema surge cuando no hay registros de un blog para un día determinado. Con mi consulta, el resultado de ese día simplemente se salta por completo.MySQL GROUP BY fecha - cómo devolver resultados cuando no hay filas
Aquí es mi consulta:
SELECT DATE(`posted`), COUNT(`id`)
FROM `blogs` WHERE `status` = 'active'
&& `posted` BETWEEN `2011-01-01` AND `2011-05-01`
GROUP BY DATE(`posted`)
Devuelve algo similar a:
count | date
_________________
2 | 2011-01-01
5 | 2011-01-02
1 | 2011-01-04
en cuenta que no se encuentra 2011-01-03, ya que no tiene ninguna entrada.
¿Cómo puedo mostrar esos días con 0 publicaciones?
¿Cómo manejaría esto de una manera dinámica? Me gustaría tener estadísticas actualizadas y me gustaría poder elegir fechas al azar. – johnnietheblack
@johnnietheblack: solo asegúrese de que su tabla de fechas contenga un rango lo suficientemente grande como para cubrir todas las consultas posibles, ya que todavía está filtrando las fechas en la cláusula WHERE, si la tabla de fechas contiene todas las fechas de 1900 a 2100 (por ejemplo, un poco excesivo) realmente no importará, ¡solo asegúrate de indexar la columna de fecha en esta tabla! –