Ограничить запрос JOIN для конкретной таблицы - PullRequest
2 голосов
/ 04 августа 2010

Я пытаюсь выполнить запрос выбора для двух таблиц, одна из которых содержит, например, продукты, а другая - цвета, которые можно выбрать для этих продуктов.

Каждый продукт имеет свой номерцветов, которые можно выбрать;некоторые из них имеют только один цвет, другие могут иметь 20 из них.

Задача запроса - проанализировать список из 20 продуктов со всеми доступными цветами.Это означает, что количество цветов для каждого продукта не должно быть ограничено, но отображаемые продукты делают.

Мой текущий запрос выглядит следующим образом:

SELECT p.*,
       c.*
FROM Products AS p
LEFT JOIN Colors AS c ON c.ColorProductID = p.ProductID
GROUP BY p.ProductID
ORDER BY p.ProductID ASC, c.ColorID ASC
LIMIT 0, 20

Проблема с этим запросомчто он действительно выбирает только 20 продуктов из базы данных, но он также выбирает только один доступный цвет для продукта вместо всех доступных цветов для продукта.

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

Заранее спасибо!

1 Ответ

6 голосов
/ 04 августа 2010
SELECT p.*, c.* FROM (select * from Products LIMIT 0,20) AS p 
                LEFT JOIN Colors AS c ON c.ColorProductID=p.ProductID 
        ORDER BY p.ProductID ASC, c.ColorID ASC 

Редактировать: Фиксированный запрос

...