C180 外部結合

SQLにおける結合とはテーブル同士をくっつけることをいいます。結合し、複数のテーブルのデータを集めたテーブルを作ることは多くのメリットがあります。今回は外部結合について紹介します。

外部結合とは

外部結合には2つの結合方法があるので、一つずつ紹介します。

employeesテーブル

Idnamedepartment_idmail
1山田1yamada@example.com
2田中2tanaka@example.com
3佐藤4sato@example.com

departmentsテーブル

Idname
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

エンジニアからのアドバイス

内部結合と違い、どちらか基準としたいテーブルがある場合は、外部結合を用いるケースがあります。抽出したいデータを抽出し、不必要なデータは抽出しない結合方法を確認してから結合しましょう。

---