我有一个日历表设置,我已经根据匹配的天数加入了另一个表,但是希望显示整个月的剩余时间,即使没有匹配的情况,我试图建立一个当前月的图表以显示每天的进度。
我的查询是:
SELECT calTable.db_date, COUNT(DISTINCT tbl_data.id) as resultsCounts
FROM calendarTable as calTable
LEFT JOIN tbl_data as tbdata ON DATE(tbl_data.startDate) = DATE(calTable.db_date)
WHERE calTable.db_date between '2019-04-01' AND '2019-04-30'
GROUP BY calTable.db_date
我意识到,我加入另一个没有未来日期的表后,就会导致其余日期无法显示,我该怎么做才能显示当前月份的剩余时间,
array (size=3)
'db_date' => string '2019-04-07' (length=10)
'resultsCounts' => string '19' (length=2)
array (size=3)
'db_date' => string '2019-04-08' (length=10)
'resultsCounts' => string '0' (length=2)
array (size=3)
'db_date' => string '2019-04-09' (length=10)
'resultsCounts' => string '0' (length=2)
如果我想显示上个月的数据并且一天中没有任何结果,也一样,因为它仍将被包含为0等。
日历表如下所示:
id | db_date | year | month | day | quarter | week | day_name | month_name
20190407 | 2019-04-07 | 2019 | 4 | 7 | 2 | 14 | sunday | April
道歉格式,不确定如何做。
答案 0 :(得分:1)
如果您在calendarTable中具有有效日期,则该日期可能与范围内的所有日期有关,请尝试添加ifnull
SELECT calTable.db_date, ifnull(COUNT(DISTINCT tbdata.id), 0) as resultsCounts
FROM calendarTable as calTable
LEFT JOIN tbl_data as tbdata ON DATE(tbdata.startDate) = DATE(calTable.db_date)
WHERE calTable.db_date between str_to_date('2019-04-01', '%Y-%m-%d')
AND tr_to_date('2019-04-30' , '%Y-%m-%d')
GROUP BY calTable.db_date