sql >> Base de Datos >  >> RDS >> Mysql

unir dos tablas junto con el recuento de registros de la segunda tabla según la condición

Usa LEFT JOIN en lugar 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;

También es importante mover el predicado p.is_active = 1 desde WHERE cláusula a ON , para que todos registros de categories table son devueltos por la consulta.