私のクエリで構文の問題が少しあります(簡略化):
select *
from table1 t1
inner join table2 t2 using (pk1)
inner join table3 t3 using (pk2)
where not exists (select1 from table4 t4 where t4.pk1 = t1.pk1)
「using」キーワードを使用することにより、Oracleは列名の前にテーブル識別子を許可しません(例:t1.pk1、pk1のみを使用できます)
私が書いた場合:
select *
from table1 t1
inner join table2 t2 using (pk1)
inner join table3 t3 using (pk2)
where not exists (select1 from table4 t4 where t4.pk1 = pk1)
このクエリでは、期待した結果は得られません。
しかし、「exists」サブクエリを使用しているので、このサブクエリに参加するにはどうすればよいですか?
もちろん、このクエリを別の方法で記述して存在を回避できるか、「using」を使用できないと思います。
しかし、where句で「join / using」をサブクエリと組み合わせることは可能ですか?
編集:Oracle10gR2を使用