SQL質疑応答スレ 9問目

このエントリーをはてなブックマークに追加
377NAME IS NULL
oracle 10gのUPDATE文で質問です。

Aテーブル
aaa|ddd

Bテーブル
aaa|bbb

Cテーブル
bbb|ccc

Aテーブルに対して、カラムaaaでBテーブルが紐づき、
Bテーブルに対して、カラムbbbでCテーブルが紐づくとします。
(つまり、Aテーブルのレコード1件は、Bテーブルを経由してCテーブルのレコード1件と紐づく)

ここで、A.ddd = 'X'のとき、C.ccc = 'Y'に更新したいのですが
下記の文であってますでしょうか?
また、もっと効率のいい方法はありますでしょうか?

update C set C.ccc = 'Y' where C.bbb in
( select B.bbb from B where B.aaa in
( select A.aaa from A where A.ddd = 'X')
)