Sono sicuro che questa risposta è molto semplice, ma non riesco a trovarla (non sono sicuro su cosa cercare!) . Un conteggio/gruppo per query standard può essere simile al seguente:MYSQL: COUNT con GROUP BY, LEFT JOIN e WHERE la clausola non restituisce valori zero
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
e questo funziona come previsto, restituendo 0 se non vengono trovate righe. Tuttavia:
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`
funziona solo se esiste almeno una riga in Table_1 e fallisce sprecando restituendo un risultato vuoto impostato se ci sono zero righe. Mi piacerebbe molto questo per restituire 0! Qualcuno mi illumina su questo? La birra può essere fornita in cambio se si è a Londra ;-)
Perché il primo esempio funziona bene allora? Tutto ciò che manca è la clausola WHERE, non ci possono essere ancora righe e questo funzionerà bene ... –
@Paul Norman - Il primo esempio funziona perché chiaramente ci sono righe nella tabella_1. Il terzo esempio non funziona perché apparentemente non ci sono righe in table_1 che hanno un valore 123 per 'another_column'. Se la query senza il raggruppamento non restituisce alcuna riga, non restituirà le righe con il raggruppamento. – Thomas