2010-05-13 86 views
0

事件考勤數據(時間戳,事件),我有一個表: ID,日期時間,事件MySQL的 - 集計算每

我也有表日期: 日期(年月日格式)

問題是有些日子沒有任何事件,我想他們表現出0(或空)

SELECT DATE_FORMAT(table.timestamp, '%Y-%m-%d') ydm, count(table.fkUID) FROM `table` where table.fkUID=$var group by ydm; 

是有一些方法來加入或使用條件語句,使結果表明:

date|count 
---------- 
2010-05-23| 5 
2010-05-24| 0 <--- this line just doesn't exist in my query. 
2010-05-26| 3 

回答

2
select d.date,count(e.timestamp) 
from dates d 
left join events e on d.date=DATE_FORMAT(e.timestamp,'%Y-%m-%d') 
group by d.date; 

我沒有環境測試,我不知道,我清楚的問題,但這裏是我的猜測。

+0

左加盟將確保沒有行將從日期表錯過。這些事件將按日期進行計算。 – Notinlist 2010-05-13 17:50:37

+0

我試過了,它沒有添加零時間那天沒有事件時間戳。儘管如此,它比我現有的代碼更清潔。 – 2010-05-13 18:19:04

+0

請注意,您也可以使用'd.date = DATE(e.timestamp)'。 – 2010-05-13 18:20:19

0

接受的智慧似乎是,你必須創建一個包含你感興趣的所有日期的名單表,然後做一個外與你有看法加入上。糟透了,我知道。