Mysql
 sql >> Base de données >  >> RDS >> Mysql

joindre deux tables avec le nombre d'enregistrements de la deuxième table en fonction de la condition

Utilisez LEFT JOIN au lieu 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;

Il est également important de déplacer le prédicat p.is_active = 1 de WHERE clause à ON , de sorte que tous enregistrements de categories table sont renvoyées par la requête.