概要:このチュートリアルでは、SQL INNERJOINステートメントを使用して複数のテーブルからデータをクエリする方法を学習します。
前のチュートリアルでは、SELECTステートメントを使用して単一のテーブルからデータをクエリする方法を学習しました。ただし、分析用の完全な結果セットを取得するために、複数のテーブルからデータをクエリすることがよくあります。複数のテーブルからデータをクエリするには、結合ステートメントを使用します。
SQLには、内部結合、外部結合(左外部結合または左結合、右外部結合または右結合、完全外部結合など)などのいくつかのタイプの結合が用意されています。 )および自己結合。このチュートリアルでは、INNER JOIN
句の使用方法を示します。
SQL INNERJOIN構文
以下に
2つのテーブルを結合するための構文:
1
2
3
4
5
|
SELECT
column1、column2
FROM
table_1
INNER JOIN table_2 ON join_condition;
|
上記の構文をさらに詳しく調べてみましょう。
-
table_1
とtable_2
は結合テーブルと呼ばれます。 - 各行について
table_1
で、クエリは結合条件を満たすtable_2
の対応する行を見つけます。対応する行が見つかった場合、クエリは両方のテーブルのデータを含む行を返します。それ以外の場合は、table_1
の次の行を調べ、このプロセスはtable_1
のすべての行が調べられるまで続きます。
3つ以上のテーブルを結合する場合、同じロジックが適用されます。
SQL INNERJOINの例
SQL INNER JOIN –2つのテーブルからのデータのクエリの例
この例では、サンプルデータベースのproducts
テーブルとcategories
テーブルを使用します。次の図は、データベース図を示しています。
上の図:
- 1つのカテゴリに多くの製品を含めることができます。
- 1つの製品は1つのカテゴリにのみ属します。
したがって、テーブルとproducts
テーブルの行。 2つのテーブル間のリンクはcategoryid
列です。
両方のテーブルから次のデータをクエリする必要があります。
-
products
テーブルのproductID
、productName
。 - iv
categories
テーブルのid = “b32d50b7b9″>
。
次のクエリは、両方のテーブルからデータを取得します。
1
2
3
4
5
6
|
SELECT
productID、productName、categoryName
FROM
製品
内部結合
カテゴリONcategories.categoryID = products.categoryID;
|
結合条件は、INNER JOIN
句のON
キーワードの後の式として指定されます:
1
|
categorys.categoryID = products.categoryID
|
products
テーブルの場合、クエリはcategories
テーブルで同じ categoryid.
の対応する行を見つけます。両方のテーブルで、SELECT句で指定された列(製品ID、製品名、カテゴリ名)を含む行を返します。それ以外の場合は、products
テーブルの次の行をチェックして、categories
テーブルで一致する行を見つけます。このプロセスは、productsテーブルの最後の行が検査されるまで続きます。
SQL INNER JOIN –3つのテーブルからのデータのクエリ
3つのテーブルを結合するために同じ手法を使用できます。次のクエリでは、productID
、productName
、categoryName
、 products
、categories
、およびsuppliers
テーブルから:
1
2
3
4
5
6
7
8
9
10
11
|
SELECT
productID、
productName、
categoryName、
companyNameASサプライヤー
FROM
製品
内部結合
カテゴリONカテゴリ。 categoryID = products.categoryID
内部結合
サプライヤーONsuppliers.supplierID = products.supplierID
|
暗黙のSQL内部結合
次のように、暗黙の内部結合と呼ばれるINNER JOIN
の別の形式があります。
1
2
3
4
5
6
7
|
SELECT
column1、column2
FROM
table_1、
table_2
WHERE
join_condition;
|
このフォームでは、すべての結合テーブルをFROM
句を使用し、SELECT
ステートメントのWHERE句に結合条件を設定します。上記のクエリ例は、暗黙のINNER JOIN
を使用して次のように書き直すことができます。
1
2
3
4
5
6
7
|
SELECT
productID、productName、categoryName
FROM
製品、
カテゴリ
場所
products.categoryID = category.categoryID;
|