Тъй като искате нулеви стойности за вашите несъвпадащи редове, това е работа за LEFT JOIN
, като:
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`
Ние броим t1.key
тъй като за съвпадащи редове те ще бъдат еднакви в първи таблица (а не втора) - следователно трябва да групираме по нея - а не по поле във втората таблица.
Съвет :избягвайте да наименувате вашите таблици/колони с mysql запазени думи. Това ще ви спести много време, ако случайно забравите обратните точки.