に基づいて、第2のテーブルからのレコードのカウントとともに、二つのテーブルに参加 - ここは、私がテーブル次ている条件
カテゴリ
+-----------+-------------+
| column | type |
+-----------+-------------+
| id | int(11) |
| name | varchar(40) |
| unit | varchar(50) |
| is_active | tinyint(1) |
+-----------+-------------+
と
製品です
+-------------+---------------+
| column | type |
+-------------+---------------+
| id | int(11) |
| category_id | int(11) |
| name | varchar(40) |
| base_rate | decimal(10,2) |
| is_active | tinyint(1) |
+-------------+---------------+
アクティブな製品数のカウントとともにカテゴリのリストを取得したいと考えています。これ以上クエリはのみ動作
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;
- 私は次のクエリが出ている
+----+--------+--------------+
| id | name | active_count |
+----+--------+--------------+
| 1 | Steel | 1 |
| 2 | Cement | 2 |
+----+--------+--------------+
- 何の製品がカテゴリのアクティブでない場合には、やや下の表のように0
を返す必要がありますそれぞれのカテゴリーに少なくとも1つの製品アクティブがある場合。利用可能な製品がない場合は、active_count
を
と返す必要があります。ここで
ではなくINNER JOIN
のSQLFIDDLE
あなたのGROUP BYは「裏返し」です... 'GROUP BY c.id、c.name、c.uni'を実行してください。私。選択した列は集計関数の引数ではなく、group by句にリストされているはずです。 – jarlh
@jarlhそうです。それを指摘していただきありがとうございます。 – Gimali