Aangezien u nulwaarden wilt voor uw niet-overeenkomende rijen, is dit een werk voor LEFT JOIN
, zoals:
SELECT
t1.*,
IF(t2.`key` IS NULL, 0, COUNT(t1.`key`)) AS t2_row_count
FROM
t1
LEFT JOIN t2
ON t1.id=t2.id
AND
t1.category=t2.category
GROUP BY
t1.`key`
We tellen t1.key
omdat ze voor overeenkomende rijen hetzelfde zijn in eerste tabel (en niet de tweede) - we moeten er dus op groeperen - en niet per veld in de tweede tabel.
Tip :vermijd om uw tabellen/kolommen een naam te geven met gereserveerde mysql-woorden. Dit bespaart u veel tijd als u per ongeluk backticks vergeet.