【SQL】テーブルの結合 ~ 外部結合・LEFT/RIGHT/FULL JOIN ~

■ はじめに

https://dk521123.hatenablog.com/entry/2010/02/05/131206

の続き。
今回は、外部結合について、扱う。

目次

【0】外部結合 の種類
【1】左外部結合(LEFT OUTER JOIN)
【2】右外部結合(RIGHT OUTER JOIN)
【3】完全外部結合(FULL OUTER JOIN)
【4】内部結合と外部結合の違い
 1)内部結合の場合
 2)外部結合の場合

 【0】外部結合 の種類

【1】左外部結合(LEFT OUTER JOIN)
【2】右外部結合(RIGHT OUTER JOIN)
【3】完全外部結合(FULL OUTER JOIN)

【1】左外部結合(LEFT OUTER JOIN)

 * 左側テーブルのレコードに、右側テーブルのレコードを結合する
 * 右側テーブルに項目が存在しない場合、NULLで補う
 * OUTERを省略して、LEFT JOINでもいい

構文

SELECT * FROM 表名1
LEFT OUTER JOIN 表名2
ON 表名1.フィールド名 = 表名2.フィールド名
WHERE 抽出条件

【2】右外部結合(RIGHT OUTER JOIN)

 * 左外部結合の右版
  => 右側テーブルのレコードに、左側テーブルのレコードを結合する

【3】完全外部結合(FULL OUTER JOIN)

* 2テーブルを互いに全件外部結合する方法
* 左テーブルのマッチしないレコードと
 右テーブルのマッチしないレコードが取得可能

https://sql55.com/t-sql/t-sql-join-5.php

 【4】内部結合と外部結合の違い

* 以下「データ例」のような「テーブル1 」と「テーブル2」の結合を考える

データ例

テーブル1 
A
B
C
D
E

テーブル2 
A★共通
B★共通
F
G

 1)内部結合の場合

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1
 INNER JOIN テーブル2
 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];

 結果

A               A
B               B

2)外部結合の場合

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1
LEFT JOIN テーブル2 ON
[テーブル1].[フィールド1]=[テーブル2].[フィールド1];

 結果

A               A
B               B
C               NULL
D               NULL

 関連記事

テーブルの結合 ~内部結合・INNER JOIN~
https://dk521123.hatenablog.com/entry/2010/02/05/131206
テーブルの結合 ~交差結合・CROSS JOIN~
https://dk521123.hatenablog.com/entry/2011/12/21/000000
テーブルの結合 ~完全結合・Union / Union All ~
https://dk521123.hatenablog.com/entry/2010/03/28/162247
全く関係ないテーブルを結合することを考える
https://dk521123.hatenablog.com/entry/2021/09/16/185552