我正在尝试对两个表执行选择查询,一个包含例如产品,另一个包含可以为这些产品选择的颜色。
每种产品都有不同数量的颜色可供选择;有些只有一种颜色,有些可以有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个产品,但每个产品的颜色没有限制?
提前致谢!
答案 0 :(得分:6)
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
修改:修正了查询