Protože chcete nulové hodnoty pro neshodné řádky, je to práce pro LEFT JOIN
, jako:
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`
Počítáme t1.key
protože pro odpovídající řádky budou stejné jako první tabulka (a ne druhá) – měli bychom tedy seskupovat podle ní – a ne podle pole v druhé tabulce.
Tip :vyhněte se pojmenování tabulek/sloupců vyhrazenými slovy mysql. To vám ušetří spoustu času, pokud náhodou zapomenete zpětné zaškrtnutí.