0

我得到一个价格如下的选项列表:(它是按价格 asc 排序的选择查询的结果)

    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

我目前的解决方案是对数据库进行多次查询:

(我在应用层/后端使用 Java。)

  1. 选择不同的颜色,并将其存储在列表中
  2. 在 For 循环中,将每种颜色的选项选择到不同的临时表中
  3. 加入表列表,并计算总数,按总数排序。

但是有没有办法将上述操作浓缩成一个存储过程或更优雅的东西?

4

1 回答 1

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上查看。

于 2012-07-31T09:40:11.800 回答