FrontPage > DataBase > 外部結合

[SQL]外部結合

テーブルとテーブルに一致するデータ項目が必要な内部結合と違い、
外部結合は、一致するデータ項目の有無にかかわらず結合する場合に使用します。

「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 行)

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-24 (日) 16:22:09