muszę spreparować kwerendy w mysql że powróci 12 wierszy (jeden wiersz dla każdego miesiąca), który wybiera nazwę miesiąca, a liczbę rekordów dla danego miesiąca. Mam dwie tabele, month_tbl i events_tbl. Każdy rekord w pliku event_tbl ma kolumnę datetime i kolumnę company_id.mysql wybrać liczbę rekordów dla każdego miesiąca
Jestem obecnie robi coś jak (zawiadomienie nie mam jeszcze klauzulę 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;
ta zwraca coś, co ja spodziewałem (wybrany 12 rzędów, z zliczania zdarzenia za miesiąc lub zero, jeśli nie było żadnych):
**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
jednak zwraca wszystkie rekordy niezależnie od firmy. Muszę się upewnić, że zapytanie jest filtrowane przez tak, dodałem klauzuli 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;
po dodaniu gdzie klauzula moje wyniki stać:
**month** **cnt**
August 88
September 99
October 120
December 9
Jakieś pomysły dlaczego tracę wszystko inne miesiące zapisują się po dodaniu klauzuli where, mimo że używam lewego sprzężenia?
czy moje rozwiązanie Ci pomogło? – arnoudhgz