質問がありますが、検索スキルが不足している可能性がありますので、遠慮なくこれを閉じて、質問の重複を指摘してください。
Oracle 11gは、あいまいな左結合をどのように解決しますか?あいまいとは、左結合が結合されたテーブルの2つの行をソーステーブルの1つの行に一致させることを意味します。どの行が参加しますか?それは決定論的ですか?もしそうなら、あいまいさの解決ルールは何ですか?
前もって感謝します!
結合条件が複数の行に一致する場合、それが内部結合または外部結合であるかどうかに関係なく、それらのすべての行が結果セットに存在します。左(外部)結合の場合、一致するものが見つからない場合、そのフィールドはnullになります。
あいまいさはありません。基本的に、行は必要に応じて複製されます。
create table a(
a_id number,
a_name varchar2(10)
);
create table b(
b_id number,
b_name varchar2(10)
);
insert into a (a_id, a_name) values (1, 'A');
insert into a (a_id, a_name) values (2, 'B');
insert into a (a_id, a_name) values (3, 'C');
insert into b (b_id, b_name) values (1, 'X');
insert into b (b_id, b_name) values (1, 'Y');
insert into b (b_id, b_name) values (2, 'Z');
select *
from a
left join b on a.a_id=b.b_id
order by a.a_id, a.a_name, b.b_id, b.b_name
A_ID A_NAME B_ID B_NAME
1 A 1 X
1 A 1 Y
2 B 2 Z
3 C (null) (null)
左結合は、フィルターを使用した一般的な相互結合と考えることができます。