0

次の 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;

ありがとう、ニコライ:)

4

1 に答える 1