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 小于或等于给定产品的产品数量。这将创建一个序列号,您可以在其中选择前四个。

于 2013-03-29T22:38:54.940 回答