AテーブルはAのID(以下AID)、Aのステータス(以下Aステータス)のカラムを持ちます。
BテーブルはBのID(以下BID)、AID、Bのステータス(以下Bステータス)のカラムを持ちます。
AとBは1:Nの関係にあります(ヘッダと明細の関係)。
BのAIDはAのAIDを参照しています。
RDBMSはFirebirdです。
このとき、
A.AID = B.AID かつ B.Bステータスがすべて「完了」であれば、
A.Aステータスを「完了」に更新するというSQLを組みたいです。
下記パターン1・2まではSQLを作成したのですが、
"B.Bステータスがすべて「完了」であれば"という条件をどう表現すれば良いか分かりません。
どのようなSQLにすれば良いか教えてください。
B.Bステータスの値は「完了」以外にもいくつかあるため、すべて「完了」になった時点で
親テーブルであるAのAステータスを「完了」としたいです。
■パターン1
SQL
1Update A 2Set A.ステータス = '完了' 3From B 4Where A.AID = B.AID
■パターン2
SQL
1Update A 2Set A.ステータス = '完了' 3WHERE EXISTS 4( 5Select 1 From B 6Where A.AID = B.AID 7)
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー