2011-12-15 60 views
1

我需要选择每个品牌类别的五种最新产品,然后显示按类别分组的结果。需要按类别选择5个最新记录?

MySQL数据库看起来像;

product

product_id (pk) 
product_name 
product_etc 
product_publish_date 
brand_id (fk) 

brand

brand_id (pk) 
brand_name 

结果应该出来像下面...

brand_a product k 
brand_a product a 
brand_a product h 
brand_a product l 
brand_a product 33 

brand_b product h 
brand_b product z 
brand_b product 9 
brand_b product ddd 
brand_b product a 

试图与

+0

SELECT * FROM产品 GROUP BY brand_id ORDER BY product_publish_date LIMIT 5 – Adrian 2011-12-15 04:39:41

回答

2

尝试:

SELECT p.* 
FROM product p1 
LEFT OUTER JOIN product p2 
    ON (p1.brand_id = p2.brand_id AND p1.product_id < p2.product_id) 
GROUP BY p1.item_id 
HAVING COUNT(*) <= 5 
ORDER BY brand_id, product_publish_date; 

比尔karwin说,这是同样的问题,因为在他的链接 - 我的回答仅仅是回答你的情况的适应。

1
select brand_name, product_name, count(*) 
from brand 
INNER JOIN product on brand.brand_id = product.brand_id 
order by product_publish_date 
group by brand_name, product_name 
having count(*) <= 5