Saya akan memilih sesuatu seperti:
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
Memindahkan AND
ke klausa join membuat join berhasil atau gagal, yang terpenting menjaga baris yang dihasilkan di mana tidak ada baris yang cocok di tabel 'kanan'.
Jika berada di WHERE
, perbandingan dengan NULL (di mana tidak ada campaign_code) akan gagal, dan dieliminasi dari hasil.