|
テーブルの結合(OUTER JOIN)
SELECT文により複数のテーブルを結合してデータを取得するには、通常JOIN句を利用します。
JOIN句にはINNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, CROSSなどがありますが、
ここではOUTER JOIN(外部結合ともいいます)について記述します。
OUTER JOIN は、基準となるテーブルの全件に対し、テーブルを結合してデータを取得します。
LEFTでは左側に記述されたテーブルが基準となり、
RIGHTでは右側に記述されたテーブルが基準となります。
また、FULLの場合は、両テーブルが基準となり、両テーブルの全件が取得対象となります。
なお、一部のデータベースソフトでは、
LEFT OUTER JOIN、RIGHT OUTER JOINはWHERE句を利用して記述することもできますが、
当コンテンツでは扱いません。
文法:SELECT <テーブル名1>.<列名1>, <テーブル名2>.<列名2>…
FROM <テーブル名1>
[LEFT | RIGHT | FULL] <OUTER> JOIN <テーブル名2>
ON <結合条件>
WHERE <抽出条件>
※OUTERの記述は省略可能です
|
***例(LEFT OUTER JOIN)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
01 |
002 |
テスト二郎 |
02 |
001 |
テスト三郎 |
03 |
001 |
テスト四郎 |
|
[所属マスタ]
所属コード |
所属名 |
01 |
営業部 |
02 |
企画部 |
04 |
販促部 |
|
[実行SQL]
※下記では列名、テーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
shain.所属コード AS 所属コード1,
shozoku.所属コード AS 所属コード2,
shozoku.所属名,
shain.社員コード,
shain.氏名
FROM
社員マスタ shain
LEFT OUTER JOIN 所属マスタ shozoku
ON shain.所属コード = shozoku.所属コード
|
[結果]
所属コード1 |
所属コード2 |
所属名 |
社員コード |
氏名 |
01 |
01 |
営業部 |
001 |
テスト一郎 |
01 |
01 |
営業部 |
002 |
テスト二郎 |
02 |
02 |
企画部 |
001 |
テスト三郎 |
03 |
<NULL> |
<NULL> |
001 |
テスト四郎 |
※<NULL>は空を意味します
***例(RIGHT OUTER JOIN)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
01 |
002 |
テスト二郎 |
02 |
001 |
テスト三郎 |
03 |
001 |
テスト四郎 |
|
[所属マスタ]
所属コード |
所属名 |
01 |
営業部 |
02 |
企画部 |
04 |
販促部 |
|
[実行SQL]
※下記では列名、テーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
shain.所属コード AS 所属コード1,
shozoku.所属コード AS 所属コード2,
shozoku.所属名,
shain.社員コード,
shain.氏名
FROM
社員マスタ shain
RIGHT OUTER JOIN 所属マスタ shozoku
ON shain.所属コード = shozoku.所属コード
|
[結果]
所属コード1 |
所属コード2 |
所属名 |
社員コード |
氏名 |
01 |
01 |
営業部 |
001 |
テスト一郎 |
01 |
01 |
営業部 |
002 |
テスト二郎 |
02 |
02 |
企画部 |
001 |
テスト三郎 |
<NULL> |
04 |
販促部 |
<NULL> |
<NULL> |
※<NULL>は空を意味します
***例(FULL OUTER JOIN)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
01 |
002 |
テスト二郎 |
02 |
001 |
テスト三郎 |
03 |
001 |
テスト四郎 |
|
[所属マスタ]
所属コード |
所属名 |
01 |
営業部 |
02 |
企画部 |
04 |
販促部 |
|
[実行SQL]
※下記ではテーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
shain.所属コード AS 所属コード1,
shozoku.所属コード AS 所属コード2,
shozoku.所属名,
shain.社員コード,
shain.氏名
FROM
社員マスタ shain
FULL OUTER JOIN 所属マスタ shozoku
ON shain.所属コード = shozoku.所属コード
|
[結果]
所属コード1 |
所属コード2 |
所属名 |
社員コード |
氏名 |
01 |
01 |
営業部 |
001 |
テスト一郎 |
01 |
01 |
営業部 |
002 |
テスト二郎 |
02 |
02 |
企画部 |
001 |
テスト三郎 |
03 |
<NULL> |
<NULL> |
001 |
テスト四郎 |
<NULL> |
04 |
販促部 |
<NULL> |
<NULL> |
※<NULL>は空を意味します
|
<<PR>>
価格:300円
価格:300円
|