5
我需要在mysql中創建一個查詢,它將返回12個行(每個月有一行),用於選擇月份名稱和給定月份的記錄數。我有兩個表,一個months_tbl和events_tbl。 events_tbl中的每條記錄都有一個日期時間列和一個company_id列。mysql選擇每個月的記錄數
我目前正在做這樣的事情(注意我沒有WHERE子句COMPANY_ID尚):
SELECT months_tbl.month, COUNT(events_tbl.event_id) cnt
FROM months_tbl
LEFT JOIN events_tbl ON months_tbl.month_id = MONTH(events_tbl.appt_date_time)
GROUP BY months_tbl.month
ORDER BY months_tbl.month_id ASC;
這將返回類似選擇什麼,我期待(12行,用計數月活動,或零,如果什麼都沒有):
**month** **cnt**
January 0
February 0
March 0
April 0
May 0
June 0
July 0
August 88
September 99
October 120
November 0
December 9
但是它返回所有記錄,而不管公司。我需要確保查詢被這樣過濾,我加了where子句:
SELECT months_tbl.month, COUNT(events_tbl.appt_id) cnt
FROM months_tbl
LEFT JOIN events_tbl ON months_tbl.month_id = MONTH(events_tbl.appt_date_time)
WHERE events_tbl.company_id = 1
GROUP BY months_tbl.month
ORDER BY months_tbl.month_id ASC;
當我添加的where子句我的結果變成:
**month** **cnt**
August 88
September 99
October 120
December 9
任何想法,爲什麼我失去了所有其他月份記錄何時添加where子句,即使我正在使用左連接?
我的解決方案能幫助你嗎? – arnoudhgz 2012-08-07 12:07:20