2015-01-22 3 views
0

У меня есть 2 таблицы: x_products и x_categoryMySQL внутреннего соединение, предел для каждой категории

Я должен выбрать 3 последние продукты вставленных (заказ по x_products.data колонка, по убыванию) для каждой категории с помощью одного запроса.

Моя идея заключалась в использовании техники INNER JOIN (для использования одного запроса).

Я пытался использовать LIMIT 0,3, но только последние 3 продукты возвращаются (3 в общей сложности, но не для каждой категории.

SELECT products.* 
FROM x_products products 
INNER JOIN x_category categories 
ON products.category = categories.id 
ORDER BY products.data DESC LIMIT 0,3 

Как я мог выбрать 3 продукта для каждой категории, но не 3 модели в общей сложности?

+0

Посмотрите на инструкцию 'GROUP BY' – Wolph

+0

Проверьте этот http: //stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results \ –

+0

Все еще боретесь? Если вам нравится, подумайте о следующем простом двухэтапном курсе действий: 1. Если вы еще этого не сделали, укажите надлежащие DDL (и/или sqlfiddle), чтобы мы могли легче реплицировать проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, представленной на шаге 1. – Strawberry

ответ

-1

Нечто подобное могло бы помочь,

SELECT products.* 
FROM x_products products 
INNER JOIN x_category categories 
ON products.category = categories.id 
GROUP BY products.category 
ORDER BY products.data DESC LIMIT 0,3 

И да вы можете найти несколько примеров here

Смежные вопросы