Ho bisogno di creare una query in mysql che restituirà 12 righe (una riga per ogni mese) che seleziona il nome del mese e il conteggio dei record per il mese specificato. Ho due tavoli, un month_tbl e events_tbl. Ogni record nel file events_tbl ha una colonna datetime e una company_id.mysql selezionare il numero di record per ogni mese
Attualmente sto facendo qualcosa di simile (notare che non ho ancora la clausola 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;
Ciò restituisce qualcosa di simile a quello che mi aspetto (12 file selezionati, con un conteggio di eventi per il mese, o zero se non ce n'erano):
**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
comunque è tornare tutti i record a prescindere dalla società. Ho bisogno di assicurarsi che la query viene filtrato da così, ho aggiunto la clausola dove:
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;
quando aggiungo la clausola where i miei risultati diventano:
**month** **cnt**
August 88
September 99
October 120
December 9
Tutte le idee perché sto perdendo tutto gli altri mesi registrano quando aggiungo la clausola where, anche se sto usando un join di sinistra?
la mia soluzione ti ha aiutato? – arnoudhgz