2014-01-23 18 views
1

如果我有一個查找表,像這樣的字段:多種產品的最佳查詢表查詢?

ID,COLOR_ID,size_id,價格

我可以很容易地得到所有的使用尺寸/可用於特定顏色的價格:

SELECT size_id, price from TABLE where color_id = 2 

但是,如果我想顯示的價格表如下所示:

red  blue green yellow 

xs 1.20 1.20 1.29 1.39 
sm 1.40 1.40 1.49 1.59 
md 1.40 1.40 1.19 1.59 
lg 1.55 1.55 1.80 1.94 
xl 1.55 1.55 1.80 1.99 
xx 2.01 2.05 2.40 2.68 

是有辦法的w/o做一個查詢每種顏色這樣做呢?或者有更好的方法來構建數據?

感謝您的幫助!

+0

如果您不包含WHERE子句,那麼您的查詢應該可以正常工作。沒有WHERE子句,所有的值都被返回? – Shawn

回答

0
select size_id, sum(if(color_id=1,price,0)) c1, sum(if(color_id=2,price,0)) c2, sum(if(color_id=3,price,0)) c3, sum(if(color_id=4,price,0)) c4 from TABLE group by size_id 

至少這個效果很好,如果你沒有可變數量的顏色。

+0

刪除where子句可防止需要此操作。 – Shawn

+0

謝謝!這可能很好。我嘗試了許多徒勞無益的事情,但是甚至不知道總和/如果可以這樣做。至於可變數量的顏色,我可以在活動顏色列表中查詢COUNT並根據需要即時生成SQL。 – Ahhk

+1

@Shawn:哈哈......是......這通常是真的,但是CFrei的方式是將一切都整齊排列(匹配表佈局),而不必非常低效地解析PHP端的整個結果(4X行),並通過將所有大小匹配到表格行來組裝表格數據。 – Ahhk