Use
LEFT JOIN
em vez de INNER JOIN
:SELECT c.id, c.name, c.unit, COUNT(p.category_id) as active_count
FROM `categories` c
LEFT JOIN `products` p
ON c.id = p.category_id AND p.is_active = 1
GROUP BY c.id;
Também é importante mover o predicado
p.is_active = 1
de WHERE
cláusula para ON
, para que todos registros de categories
tabela são retornados pela consulta.