【发布时间】:2011-08-30 08:55:13
【问题描述】:
我有一个 MySQL 查询:
SELECT COUNT(*) AS total, DATE_FORMAT(event.serverTime,'%Y-%m-%d') AS sdate
FROM event
WHERE
event.serverTime >= :startDate
AND event.serverTime <= :endDate
GROUP BY sdate;
正确返回如下内容:
2011-08-10 => 5
2011-08-15 => 6
但是,我还想获取计数为 0 的日期。所以假设 startDate 是 2011-08-10 而 endDate 是 2011-08-15,我会看到:
2011-08-10 => 5
2011-08-11 => 0
2011-08-12 => 0
2011-08-13 => 0
2011-08-14 => 0
2011-08-15 => 6
我正在使用 PHP,所以理论上我可以做一些复杂的循环并以某种方式填补空白,但我想知道是否有更好的解决方案?
请注意,如果不存在好的 MySQL 解决方案,我也愿意接受好的 PHP 解决方案
【问题讨论】:
-
当计数为零时是否填充事件表
-
不,这就是问题所在。如果 2011-08-11 没有事件,那么当天就没有数据,因此没有什么可计算的。我什至不确定是否有解决该问题的方法...
-
请注意,如果没有好的 MySQL 解决方案存在,我也愿意接受好的 PHP 解决方案