Ограничить запрос JOIN для конкретной таблицы

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

Каждый продукт имеет разное количество цветов, которые можно выбрать; у одних только один цвет, у других их может быть 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 продуктов, но не иметь ограничений на цвета для каждого продукта?

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


person carlo    schedule 04.08.2010    source источник


Ответы (1)


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 

Изменить: исправлен запрос

person deinst    schedule 04.08.2010
comment
Ваш запрос был почти правильным, удаление GROUP BY p.ProductID помогло! Спасибо! - person carlo; 04.08.2010