C160 内部結合

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

結合とは

employeesテーブル

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

departmentsテーブル

Idname
1営業部
2マーケティング部
3開発部

内部結合(INNER JOIN)

INNER JOIN(内部結合)とは、テーブルとテーブルを結合するための構文です。INNER(内部)というのは、テーブルとテーブルの互いの条件に一致するレコード(データ行)のみを抽出するということです。

テーブル間を結合する条件はON句につづけて、一般に主キー(PRIMARY KEY)と外部キーを”=”で関連づけます。

SQL
SELECT
  カラム
FROM 
  テーブルa
INNER JOIN
  テーブルb
ON 
  テーブルa.カラム = テーブルb.カラム --結合条件

下記の様に記載することでemployeesテーブルとdepartmentsテーブルを内部結合することができます。

SQL
SELECT 
  employees.name
FROM
  employees
INNER JOIN
  departments
ON
  employees.department_id = departments.id

抽出結果

SQL
山田
田中

departmentsテーブルにid”4″は存在しないので、employeesテーブルのdepartment_id”4″は抽出されません。

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

実際のソフトウェアでは、INNER JOIN がデフォルトになっており、JOIN とだけ書くと INNER JOIN のことを指すことが多いです。王道な結合方法なので他の結合方法との違いも理解しましょう。

また FROMの後にテーブルをカンマで区切って書きWHERE条件で結合する書き方もあります。上記の例の場合、以下のように書くことができます。

SQL
SELECT 
  employees.name 
FROM
  employees, departments 
WHERE
  employees.department_id = departments.id

どの様に書くかは開発方針に従うべきですが、可読性を上げる書き方をした方が良いでしょう。別の章のと関連しますが、LEFT JOINと書くべきところを書き忘れたのか INNER JOINの省略なのか明確でなくなります。このように書くことができると知識として覚えておき、 内部結合は INNER JOINと書くべきだと思います。

---