Oracle 10g (XE 10.2.0.1.0) を使用していますが、理解できない動作を見つけました。
select *
from employees manager
join employees worker on MANAGER.EMPLOYEE_ID = WORKER.MANAGER_ID
join departments on DEPARTMENTS.manager_id = 108
where
department_id = 100
;
問題は、オラクルが where 句のあいまいさについて文句を言うべきだと思うことです。これは、テーブルとdepartment_id
の両方の列であるためです。事実は Oracle 10g にありますが、そうではありません。結果は、 を にあるものとして解釈することを示しています。ただし、2 番目の結合ステートメント (上記の 4 行目) をコメントアウトすると、Oracle は予想どおり「ORA-00918: 列があいまいに定義されています」と文句を言います。employees
departments
department_id
departments
では、あいまいさが Oracle 10g でどのように定義されているかを説明してくれる人はいますか? それとも、これは 10g のバグですか?
ところで: テーブルは、Oracle 10g にバンドルされているデフォルトの HR スキーマで定義されています。
更新: 関連する投稿が見つかりました: Oracle SQL は、ある結合ではあいまいさを神秘的に解決し、他の結合では解決しないのはなぜですか