2012-07-31 65 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

相关问题