テーブルとテーブルに一致するデータ項目が必要な内部結合と違い、
外部結合は、一致するデータ項目の有無にかかわらず結合する場合に使用します。
「LEFT JOIN」は、 左のテーブル(Aテーブル)を基にして、 もう一つの右テーブル(Bテーブル)の情報を付加する方法。 そのため、Bテーブルに該当データが無い場合は、 BテーブルのデータはNULL項目となる。 (「内部結合」は、NULLになるレコード分が無い状態。)
「RIGHT JOIN」は、 右のテーブル(Aテーブル)を基にして、 もう一つの左テーブル(Bテーブル)の情報を付加する方法。 そのため、Bテーブルに該当データが無い場合は、 BテーブルのデータはNULL項目となる。
SELECT [表示項目] FROM [table1] [ LEFT | RIGHT | FULL ] [OUTER] JOIN [table2] ON [結合条件];
<< ORACLE >> SELECT * FROM test1 a, test2 b WHERE a.item1(+) = b.item1;
<< Oracle 9i以上 & SQL Server & PostgreSQL ...他 >> SELECT * FROM test1 a LEFT JOIN test2 b ON a.item1 = b.item1;
<< FULL JOIN >> 外部結合でどちらか片方にレコードが有ればOKなケース。 test=# select * from test1; item | item2 ------+------- 12 | 13 13 | 15 (2 行) test=# select * from test2; item | item3 ------+------- 13 | 14 14 | 16 (2 行) test=# select * from test1 a,test2 b where a.item = b.item; item | item2 | item | item3 ------+-------+------+------- 13 | 15 | 13 | 14 (1 行) test=# select * from test1 a FULL JOIN test2 b on a.item = b.item; item | item2 | item | item3 ------+-------+------+------- 12 | 13 | | 13 | 15 | 13 | 14 | | 14 | 16 (3 行)