|
|
|
|
外部結合(OUTER JOIN、(+)) |
|
スポンサード リンク
外部結合は、(+) または、OUTER JOIN句を使用します
WHERE 表1.列A (+) = 表2.列A |
表2の列Aにしか存在しないデータも検索される |
WHERE 表1.列A = 表2.列A(+) |
表1の列Aにしか存在しないデータも検索される |
FROM 表1
LEFT|RIGHT OUTER JOIN 表2
ON ( 表1.列A = 表2.列A ) |
ANSI/ISO SQL99に対応した外部結合
LEFT OPUTER JOINと指定した場合は、表1の列Aにしか存在しないデータも検索される
RIGTH OPUTER JOINを指定した場合は、表2の列Aにしか存在しないデータも検索される |
サンプル表「emp」データ
|
SQL> select * from emp;
EMP DEP JOB FIRST_NAME LAST_NAME SALARY
--- --- --- ---------- ---------- ----------
E01 D01 J01 名字1 名前1 100
E02 D01 J01 名前2 名前2 250
E03 D02 J02 名前3 名前3 200
E04 D02 J03 名前4 名前4 200
E05 D02 J03 名前5 名前5 130
E06 D03 J03 名前6 名前6 150 |
サンプル表「dept」データ
|
SQL> select * from dept;
DEP DEPT_NAME
--- ----------
D01 総務部
D02 経理部
D04 営業部
D05 管理部 |
例1) 表「emp」と表「dept」の列「dept_id」で外部結合します。表「emp」にしか存在しないデータも検索します
|
SQL> select
2 a.emp_id, a.dept_id, b.dept_id, b.dept_name
3 from emp a,dept b
4 where
5 a.dept_id = b.dept_id (+);
EMP DEP DEP DEPT_NAME
--- --- --- ----------
E01 D01 D01 総務部
E02 D01 D01 総務部
E03 D02 D02 経理部
E04 D02 D02 経理部
E05 D02 D02 経理部
E06 D03 |
例2) 例1)と同じことをANSI/ISO SQL99に対応したSQL文で記述します
|
SQL> select
2 a.emp_id, a.dept_id, b.dept_id, b.dept_name
3 from emp a
4 left outer join dept b
5 on (a.dept_id = b.dept_id );
EMP DEP DEP DEPT_NAME
--- --- --- ----------
E01 D01 D01 総務部
E02 D01 D01 総務部
E03 D02 D02 経理部
E04 D02 D02 経理部
E05 D02 D02 経理部
E06 D03 |
”OUTER”は省略可能です
スポンサード リンク
|
|
|
|
|