2010-08-04 36 views
2

我試圖對兩個表執行選擇查詢,一個包含例如產品,另一個包含可以爲這些產品選擇的顏色。在特定表上限制連接查詢

每種產品都有不同數量的顏色可供選擇;有些只有一種顏色,其他的可以有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種產品,但對每種產品的顏色沒有限制?

在此先感謝!

回答

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 

編輯:固定查詢

+0

您所查詢的是差不多吧,除去GROUP BY p.ProductID的伎倆!謝謝! – carlo 2010-08-04 14:29:40

+0

你真棒m8!多謝! – zPuls3 2013-07-18 09:49:33