0

次のような価格のオプションのリストが表示されます:(これは、価格ascで並べ替えたselectクエリの結果です)

    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. テーブルのリストに参加し、合計を計算し、合計で並べ替えます。

しかし、上記の操作をストアドプロシージャまたはより洗練されたものに凝縮する方法はありますか?

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 に答える