Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - Zliczanie wierszy i problem z lewym złączeniem

Zdecydowałbym się na coś takiego:

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

Przenoszenie AND do klauzuli join sprawia, że ​​łączenie się powiedzie lub zakończy się niepowodzeniem, co ma kluczowe znaczenie dla zachowania wynikowych wierszy tam, gdzie nie ma pasującego wiersza w „prawej” tabeli.

Gdyby znajdował się w WHERE , porównania z wartością NULL (gdzie nie ma kodu_kampanii) zakończą się niepowodzeniem i zostaną usunięte z wyników.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę zapętlić zestaw wyników MySQL więcej niż raz, używając funkcji mysql_*?

  2. Jak dołączyć zmienną PHP do instrukcji MySQL?

  3. 8 najpopularniejszych baz danych

  4. Jak przeprowadzać uaktualnienia kroczące dla MySQL

  5. PHP i mySQL:Prosty kod do implementacji transakcji - Commit &Rollback