Necesito crear una consulta en mysql que devolverá 12 filas (una fila para cada mes) que selecciona el nombre del mes y el recuento de registros para el mes dado. Tengo dos tablas, una months_tbl y events_tbl. Cada registro en events_tbl tiene una columna de fecha y hora y una columna company_id.mysql seleccione el recuento de registros para cada mes
Actualmente estoy haciendo algo como (nótese que no tengo la cláusula DONDE Company_id aún):
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;
Esto devuelve algo así como lo que estoy esperando (12 filas seleccionadas, con un recuento de eventos para el mes, o cero si no hubo ninguno):
**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
sin embargo, está devolviendo todos los registros independientemente de la empresa. Necesito para asegurarse de que la consulta es filtrada por lo tanto, he añadido la cláusula 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;
cuando agrego la cláusula where mis resultados se convierten en:
**month** **cnt**
August 88
September 99
October 120
December 9
Cualquier idea por qué estoy perdiendo todo los otros meses registra cuando agrego la cláusula where, aunque estoy usando una combinación de la izquierda?
¿Te ayudó mi solución? – arnoudhgz