Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verbinden Sie zwei Tabellen zusammen mit der Anzahl der Datensätze aus der zweiten Tabelle basierend auf der Bedingung

Verwenden Sie LEFT JOIN statt 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;

Es ist auch wichtig, das Prädikat p.is_active = 1 zu verschieben von WHERE -Klausel auf ON , sodass alle Aufzeichnungen von categories Tabelle werden von der Abfrage zurückgegeben.