zwei Tabellen zusammen mit der Anzahl der Datensätze aus der zweiten Tabelle basierend auf der Bedingung @ verbind

Ich habe folgende Tabellen -

Hier ist SQLFIDDLE

Kategorie

+-----------+-------------+
|  column   |    type     |
+-----------+-------------+
| id        | int(11)     |
| name      | varchar(40) |
| unit      | varchar(50) |
| is_active | tinyint(1)  |
+-----------+-------------+

un

Produkt

+-------------+---------------+
|   column    |     type      |
+-------------+---------------+
| id          | int(11)       |
| category_id | int(11)       |
| name        | varchar(40)   |
| base_rate   | decimal(10,2) |
| is_active   | tinyint(1)    |
+-------------+---------------+

Ich möchte eine Liste der Kategorien zusammen mit der Anzahl der aktiven Produkte erhalten. Wenn für eine Kategorie keine Produkte aktiv sind, sollte 0 zurückgegeben werden.

Etwas wie Tabelle unten -

+----+--------+--------------+
| id |  name  | active_count |
+----+--------+--------------+
|  1 | Steel  |            1 |
|  2 | Cement |            2 |
+----+--------+--------------+

Ich habe folgende Frage gestellt -

SELECT c.id, c.name, c.unit, COUNT(p.category_id) as active_count 
FROM `categories` c 
JOIN `products` p
    ON c.id = p.category_id
WHERE ( p.is_active = 1 )
GROUP BY p.category_id;

Dieses überquery funktioniert nur, wenn mindestens ein Produkt aktiv ist in jeder Kategorie. Wenn keine Produkte verfügbar sind, sollte @ zurückgegeben werdeactive_count wie0

Wie kann ich das beheben?

Hier ist SQLFIDDLE

Antworten auf die Frage(2)

Ihre Antwort auf die Frage