复杂查询 - MySql(类别x产品)

时间:2013-03-29 22:33:38

标签: mysql cakephp

我对复杂的查询很困难。有一个类别和产品表。我需要展示每个类别的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;

我在哪里设定产品限制?

感谢。

Felipe Marques

1 个答案:

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