SQLにおける結合とはテーブル同士をくっつけることをいいます。結合し、複数のテーブルのデータを集めたテーブルを作ることは多くのメリットがあります。今回は外部結合について紹介します。
外部結合とは
外部結合には2つの結合方法があるので、一つずつ紹介します。
employeesテーブル
| Id | name | department_id | |
| 1 | 山田 | 1 | yamada@example.com |
| 2 | 田中 | 2 | tanaka@example.com |
| 3 | 佐藤 | 4 | sato@example.com |
departmentsテーブル
| Id | name |
| 1 | 営業部 |
| 2 | マーケティング部 |
| 3 | 開発部 |
LEFT (OUTER) JOIN
LEFT (OUTER) JOINとは内部結合 + FROM側のテーブルに存在するレコードを抽出する結合方法です。OUTERは入れず、LEFT JOINと記載することも可能です。
SQL
SELECT
name,
department_id
FROM
employees
LEFT OUTER JOIN
departments
ON
employees.department_id = departments.id;抽出結果
SQL
山田 1
田中 2
佐藤 NULL関連性はなくてもemployeesテーブルのレコードは抽出されるため、department_idが4のname”佐藤”を抽出がされます。
RIGHT (OUTER) JOIN
RIGHT (OUTER) JOINとは内部結合 + JOINされた側のテーブルに存在するレコードを抽出する結合方法です。OUTERは入れず、RIGHT JOINと記載することも可能です。
SQL
SELECT
name,
department_id
FROM
employees
RIGHT OUTER JOIN
departments
ON
employees.department_id = departments.id;抽出結果
SQL
山田 1
田中 2
NULL 3エンジニアからのアドバイス
内部結合と違い、どちらか基準としたいテーブルがある場合は、外部結合を用いるケースがあります。抽出したいデータを抽出し、不必要なデータは抽出しない結合方法を確認してから結合しましょう。
