sql >> Databáze >  >> RDS >> Mysql

MySQL - Problém počítání řádků a levého spojení

Rozhodl bych se pro něco jako:

SELECT 
    c.id AS campaign_id, 
    COUNT(cc.id) AS code_count
FROM 
    campaigns c
LEFT JOIN campaign_codes cc on cc.campaign_id = c.id
AND cc.status = 0 -- Having this clause in the WHERE, effectively makes this an INNER JOIN
WHERE c.partner_id = 4
GROUP BY c.id

Přesunutí AND do klauzule spojení způsobí, že spojení bude úspěšné nebo se nezdaří, což zásadně udržuje výsledné řádky tam, kde není žádný odpovídající řádek v 'správné' tabulce.

Pokud by to bylo v WHERE , srovnání s hodnotou NULL (kde není žádný kód kampaně) by selhalo a bylo by z výsledků vyloučeno.



  1. Chyba PID při startu mysql.server?

  2. Převod výsledků Select do skriptu Insert - SQL Server

  3. Výkon vkládání PHP PDO Mysql

  4. Jak otestovat, zda je správně nainstalován ovladač JDBC a zda lze DB připojit?