まず、質問の簡潔な要約は次のとおりです。
INSERT ステートメントを条件付きで実行することは可能ですか? これに似たもの:
IF(expression) INSERT...
これで、ストアド プロシージャを使用してこれを実行できることがわかりました。
今、私はそれをしたいです
次の 3 つのテーブルがあるとします。
products: id, qty_on_hand
orders: id, product_id, qty
roomTable :id,product_id,room_number,booked_status
ここで、20 部屋 (製品 ID 2) の注文が入ったとします。最初に、注文テーブルから指定された product_id の合計数量を total_qty および total_qty < qty_on_hand としてチェックし、それが true を返す場合は、注文値を挿入し、最後にbooked_status= の後に 1 部屋を更新します。 booked_status ='Y' の roomTable から 'Y' 部屋を取得し、その部屋の ID を指定します。
問題は、結合クエリを作成できないことです。私がこれまでにやったこと -
INSERT INTO orders(product_id, qty)
SELECT 2, 20 FROM products WHERE id = 2 AND qty_on_hand >= 20