Estoy seguro de que esto tiene una respuesta muy simple, pero parece que no puedo encontrarlo (¡no estoy seguro de qué buscar!) . Un recuento/grupo estándar de consulta puede tener este aspecto:MYSQL: COUNT con GROUP BY, LEFT JOIN y WHERE cláusula no devuelve valores cero
SELECT COUNT(`t2`.`name`)
FROM `table_1` `t1`
LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id`
WHERE `t1`.`another_column` = 123
y esto funciona como se esperaba, devolviendo un 0 si no se encuentran filas. Sin embargo:
SELECT COUNT(`t2`.`name`)
FROM `table_1` `t1`
LEFT JOIN `table_2` `t2` ON `t1`.`key_id` = `t2`.`key_id`
WHERE `t1`.`another_column` = 123
GROUP BY `t1`.`any_col`
sólo funciona si hay al menos una fila en table_1 y falla estrepitosamente devolver un conjunto de resultados vacío si hay cero filas. Realmente me gustaría que esto vuelva 0! Alguien me ilumine sobre esto? Se puede proporcionar cerveza a cambio si se encuentra en Londres ;-)
¿Por qué el primer ejemplo funciona bien entonces? Lo único que falta es la cláusula WHERE, todavía no puede haber filas y esto funcionará muy bien ... –
@Paul Norman - El primer ejemplo funciona porque claramente hay filas en la tabla_1. El tercer ejemplo no funciona porque aparentemente no hay filas en la tabla_1 que tengan un valor 123 para 'another_column'. Si la consulta sin la agrupación no devuelve filas, no devolverá filas con la agrupación. – Thomas