Php MySQL填充空日期
一段时间以来,我一直试图解决这个问题,但找不到解决方案:我正在查询时间条目,结果如下:Php MySQL填充空日期,php,mysql,date,Php,Mysql,Date,一段时间以来,我一直试图解决这个问题,但找不到解决方案:我正在查询时间条目,结果如下: 2015-02-10: 13 2015-02-11: 16 2015-02-13: 11 如您所见,我在数组中缺少两天,因为这几天没有条目。我的google fu为我带来了一些解决此问题的方法,但似乎没有一种方法适用于我的特定代码: SELECT DATE(time_entries.start) AS date, COUNT(time_entries.id) AS entries,
2015-02-10: 13
2015-02-11: 16
2015-02-13: 11
如您所见,我在数组中缺少两天,因为这几天没有条目。我的google fu为我带来了一些解决此问题的方法,但似乎没有一种方法适用于我的特定代码:
SELECT
DATE(time_entries.start) AS date,
COUNT(time_entries.id) AS entries,
SUM(CASE WHEN user_id = 4 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS me,
SUM(CASE WHEN user_id = 3 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS ph
FROM time_entries
LEFT JOIN calendar_table
ON time_entries.start=calendar_table.dt
WHERE start BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURDATE()
GROUP BY date
ORDER BY date
我使用以下帮助创建了calendar_表:
请帮忙!
最好的
Chris尝试右连接。您的查询正在使用您的时间项记录来匹配日历表,但没有找到任何内容,因为它们不在那里 通过使用right join,您将首先使用日历表记录
SELECT
DATE(time_entries.start) AS date,
COUNT(time_entries.id) AS entries,
SUM(CASE WHEN user_id = 4 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS me,
SUM(CASE WHEN user_id = 3 THEN TIMESTAMPDIFF(MINUTE, start, end) ELSE 0 END) AS ph
FROM time_entries
RIGHT JOIN calendar_table
ON time_entries.start=calendar_table.dt
WHERE start BETWEEN CURRENT_DATE - INTERVAL 1 MONTH AND CURDATE()
GROUP BY date
ORDER BY date
不幸的是,它不起作用。当我简单地将我的左连接与右连接交换时,我会收到一些随机条目。您能发布表定义吗?仅列名称和类型。