To powinno działać dla Ciebie:
SELECT `t1`.`id` , COUNT(`t2`.`id`) AS `count`
FROM `t1` LEFT JOIN `t2` ON `t1`.`id` = `t2`.`id`
GROUP BY `t1`.`id`
Połączenie lewe zapewnia, że masz wszystkie wiersze z t1 i COUNT(t2
.id
) powoduje, że liczy tylko rekordy, w których t2.id nie jest puste (czyli te, które naprawdę istnieją w t2)