我得到一个价格列表,如下所示: (这是选择查询按价格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
现在我需要根据要求配对这些选项:
e.g。如果我需要2 R(红色)和4 G(绿色)
我想返回一个可能的组合列表(按价格asc排序),如:
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。)
但有没有办法将上述操作压缩成存储过程或更优雅的东西?
答案 0 :(得分: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上查看。