0

複雑なクエリが苦手です。カテゴリと製品の表があります。各カテゴリの 4 つの製品を表示する必要があります。どうやってやるの?

私の構造体:Category.id、Category.nameおよびProduct.id、Product.category_id。

SQL:

SELECT Product.id, Product.name, Product.img, Category.name FROM categories AS Category
INNER JOIN (SELECT Product.id, Product.name, Product.img, Product.category_id FROM products AS Product) AS Product ON
Product.category_id = Category.id;

製品の制限はどこに設定すればよいですか?

ありがとう。

フェリペ・マルケス

4

1 に答える 1

0

これはMySQLでは苦痛です(私の意見では)。相関サブクエリを使用したバージョンを次に示します。

SELECT p.id, p.name, p.img, c.name
FROM categories c INNER JOIN
     (SELECT p.id, p.name, p.img, p.category_id,
             (select count(*) from products p2 where p2.category_id = p.category_id and p2.id <= p.id
             ) as seqnum
      FROM products p
     ) p
     ON Product.category_id = Category.id
where seqnum <= 4

これは、相関サブクエリを使用して、製品 ID が指定された製品以下の製品の数をカウントします。これにより、最初の 4 つを選択できるシーケンス番号が作成されます。

于 2013-03-29T22:38:54.940 に答える