2012-01-18 37 views
0

我將日曆表用作連接表,並嘗試爲員工從CMS接收的評論數創建圖表。查詢目前看起來像這樣計算行的故障

SELECT MONTHNAME(Calendar.datefield) AS Month, COUNT(Review.reviewee_id) AS Count 
FROM calendar Calendar 
LEFT JOIN reviews Review ON MONTH(Calendar.datefield) = MONTH(Review.created) AND Review.reviewee_id = 24 AND YEAR(Calendar.datefield) = '2011' 
GROUP BY Month 
ORDER BY MONTH(Calendar.datefield) 

這將返回

'January', '0' 
'February', '0' 
'March', '0' 
'April', '0' 
'May', '0' 
'June', '0' 
'July', '0' 
'August', '0' 
'September', '0' 
'October', '434' 
'November', '120' 
'December', '0' 

但計數是錯誤的。我試圖理解計數的工作方式。每個月的這個數字都是0,但在10月份這個員工只有4個評論。

回答

0

我相信你應該 Calendar.datefield = Review.created

更換 MONTH(Calendar.datefield) = MONTH(Review.created) 如果沒有更換,你算所有評論,在特定月份發生(例如10月),不僅是那些在2011年特定月份,而且例如2010年10月的那些。

+0

就是這樣。我也檢查了喬恩的建議。它在每個月的每一天都在循環。所以十月份實際上有14條評論(我錯了),並在當月乘以31天得到434條。感謝你們兩位的快速幫助。 – Jeff 2012-01-18 19:46:46

0

要了解正在發生的事情,您可以嘗試一些更簡單的查詢。首先嚐試取出GROUP BY並獲取它正在計數的所有內容。

SELECT MONTHNAME(Calendar.datefield) AS Month, Review.reviewee_id, * 
FROM calendar Calendar 
LEFT JOIN reviews Review ON MONTH(Calendar.datefield) = MONTH(Review.created) 
AND Review.reviewee_id = 24 AND YEAR(Calendar.datefield) = '2011' 
AND MONTHNAME(Calendar.datefield) = 'October' 

最有可能的是,多行正在鏈接,但434不會在4奇怪的均勻工作。