2012-07-31 26 views
0

我得到一個選項列表與價格如下所示: (這是由價格ASC選擇查詢排序結果)更好的方式來實現在MySQL中下列操作?

price color quanlity 
o_id    
1  2  R  medium 
3  3  G  bad 
4  4  G  good 
5  6  B  good 
2  8  R  medium 

現在我需要配對這些選項根據要求:

例如如果我需要2 R(紅色)和4 G(綠)

我想退貨的可能組合(按價格升序排序)的列表,如:這個

 R(2) G(4)  
c_id o_id o_id total price 
1   1 3  16 
2   1 4  20 
3   2 3  28 
4   2 4  32 

我目前的解決方案就是讓多個查詢到DB:

(我使用Java應用層/後端)

  1. 選擇不同的顏色,並將其存儲在一個列表
  2. 在for循環中,每種顏色的選擇選項到一個不同的臨時表
  3. 加入表的列表,並計算出總的,排序總。

但是有沒有辦法將上述操作壓縮到存儲過程或更優雅的東西?

+0

所以你不知道可用的顏色事先?用戶如何選擇他們需要的顏色,以及如何存儲? – podiluska 2012-07-31 09:17:41

回答

1

你只需要一個簡單的自聯接:

SELECT R.o_id AS R_id, G.o_id AS G_id, 2*R.price + 4*G.price AS total 
FROM  mytable R JOIN mytable G ON R.color = 'R' AND G.color = 'G' 
ORDER BY total 

看到它的sqlfiddle

相關問題