2011-12-15 2 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

+0

возможно дубликат [Как выбрать новые четыре элемента в каждой категории?] (Http://stackoverflow.com/questions/1442527/ как-к-select-the-newest-four-items-per-category) –

+0

какая проблема вы получаете? – gprathour

ответ

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 
Смежные вопросы