English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL テーブルの結合(Join)

このチュートリアルでは、二つのテーブルを結合して組み合わせデータを取得する方法を学びます。

SQL結合の基本

今までに見たすべてのクエリは一つのテーブルに集中していますが、現実世界では、一度に二つまたは三つのテーブルをクエリして統合された結果セットを取得することがよくあります。これは技術的に「結合」と呼ばれますが、これはテーブル間の公共フィールド(外部キー)異なるテーブルを結合して新しいデータビューを作成します。

この点を理解しやすくするために、以下を見てみましょうemployeesおよびdepartmentsテーブルです。ここでは、employeesテーブルのdept id列がdepartmentsテーブルの外部キーです。したがって、これらのテーブルを結合して組み合わせデータを取得できます。

+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name        |
+---------+------------------+
|       1 | Administration   |
|       2 | Customer Service |
|       3 | Finance          |
|       4 | Human Resources  |
|       5 | Sales            |
+---------+------------------+
テーブル: employees
テーブル: departments

注意:テーブルを結合するためには、結合する列のデータが一致する必要がありますが、列名が一致する必要はありません。

結合種類

テーブルを結合する際には、クエリで作成される結合の種類が結果セットに表示される行に影響を与えます。以下の種類の結合を作成できます:

内結合(Inner join)

結合は、両方の結合テーブルに一致する行のみを返します。例えば、employeesとdepartmentsテーブルが結合され、各従業員の部署名を表示する結果セットを作成します。内部結合では、部署情報がない従業員は結果セットに含まれません。また、従業員がいない部署も結果セットに含まれません。

次の章では、以下の内容について学びます。内部結合のの詳細情報。

外部結合(Outer join)

外部結合は内部結合の拡張です。外部結合が結合テーブルに関連する行がない場合でも、外部結合はこれらの行を返します。外部結合には、左結合(left join),右結合(right join)および完全結合(full join

次の章で、外部結合のこれらのバリエーションについて詳しく説明します。

十字結合(Cross join)

の十字結合は、結合条件がない結合です。一つのテーブルの各行は、もう一つのテーブルの各行と合わさります。このような結果セットは、カールス・ダイヤモンドまたはクロス積と呼ばれます。例えば、employeesおよびdepartmentsテーブル間の十字結合は、各可能な従業員/部門の組み合わせには一行があります。

次の章では、以下について学びます十字結合の詳細情報。