私は数日間問題に苦しんでいます。Oracle DB(10g)にいくつかのテーブルがあります。1つは優先度でソートされた注文のリストを示し、もう1つは製品の在庫を示しています。私がやりたいのは、優先順位に基づいて利用可能な製品を注文に割り当てることです。私の質問は次のとおりです。
- 各注文は1つの製品のみを受け取ります。利用可能な存在に基づいて、製品を受け取ることができる注文のみを選択するにはどうすればよいですか?
- 手順をより効率的にするために、製品を選択しながら在庫の変更を保存し、手順の最後に更新を適用する方法はありますか?
どちらのテーブルにも数千の項目があるため、PL/SQLストアドプロシージャの方が効率的だと思います。
お手数をおかけしますが、よろしくお願いいたします。
PS:これは私のテーブルの例です。
Orders
-------------------------------------------
| ID | Priority | Product
-------------------------------------------
| Order1 | 50 | 1
| Order7 | 48 | 3
| Order3 | 45 | 1
| Order2 | 40 | 1
| Order9 | 30 | 2
| Order4 | 15 | 3
Inventory
-------------------------------------------
| ProductID | Qty
-------------------------------------------
| 1 | 2
| 2 | 4
| 3 | 1
ストアドプロシージャを実行した後、次の結果を取得し、インベントリを更新する必要があります。
-------------------------------------------
| ID | Priority | Product
-------------------------------------------
| Order1 | 50 | 1
| Order7 | 48 | 3
| Order3 | 45 | 1
| Order9 | 30 | 2
Updated Inventory
-------------------------------------------
| ProductID | Qty
-------------------------------------------
| 1 | 0
| 2 | 3
| 3 | 0