SQL INNER JOIN (日本語)

概要:このチュートリアルでは、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_1table_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テーブルのproductIDproductName
  • 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つのテーブルを結合するために同じ手法を使用できます。次のクエリでは、productIDproductNamecategoryNameproductscategories、および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;

ベン図を使用して内部結合を視覚化する

Write a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です