2012-01-18 10 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) を交換する必要があると信じて、あなたは、2011年に(例えば、10月の)だけでなく、それらの特定の月の特定の月に起こったすべてレビューを数えますまた、2010年10月のものもあります。

+0

それだけです。私はまたジョンの提案をチェックした。毎月、毎月繰り返されていました。 10月には実際に14件のレビュー(私は間違っていました)を得て、その月に31日をかけて434を得ました。 – Jeff

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の中で均等に動作しません。