次の 2 つのテーブルで構成されるデータベースがあります。
categories
products
これら 2 つのテーブルは 1 対多の関係であるため、すべての製品を「category_id」列を持つ 1 つのカテゴリにのみリンクできます。
商品カテゴリには「ステータス」という欄があります。
ここに私の問題があります: すべてのカテゴリを返し、結果テーブルに 2 つの列を追加したいと思います。
1) 最初の列は、カテゴリ内の製品の数をカウントします。(解決済み)
2) 2 番目の列は、products.'status'="on sale" である製品の数をカウントします。
これまでの私のコード(動作しません!):
SELECT a.*, COUNT(b.`category_id`) AS product_count, COUNT(c.`category_id`) AS status_count
FROM `categories` AS a
LEFT JOIN `products` AS b ON ( b.`category_id` = a.`id` )
LEFT JOIN `products` AS c ON ( c.`status` = 'on sale' AND c.`category_id` = a.`id`)
GROUP BY a.`id`
ORDER BY a.`name` ASC;
次のコードは、製品数の列のみを返します (動作します!):
SELECT a.*, COUNT(b.`category_id`) AS equation_count
FROM `categories` AS a
LEFT JOIN `products` AS b ON ( b.`category_id` = a.`id` )
GROUP BY a.`id`
ORDER BY a.`name` ASC;
ありがとう、ニコライ:)