我正在使用日历表作为连接表,并尝试为员工从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 :(得分: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'中并不均匀,这是奇数。
答案 1 :(得分:0)
我相信你应该更换
MONTH(Calendar.datefield) = MONTH(Review.created)
同
Calendar.datefield = Review.created
如果没有替换,您可以计算在特定月份(例如10月)发生的所有评论,不仅是2011年特定月份的评论,还包括2010年10月的那些评论。