logo

SQL JOIN の種類

SQL結合

SQL 結合は、定義された条件に基づいて 2 つ以上のテーブルからデータ (行または列) をフェッチまたは結合するために使用されます。

表 1: 順序

注文ID 顧客ID 注文名 商品名
12025 101 ピーター ABC
12030 105 ロバート XYX
12032 110 ジェームス XYZ
12034 115 アンドリュー PQR
12035 120 マシュー AAA

表 2: 顧客

顧客ID 顧客名
100 乱雑な マキシコ
101 王子 台湾
103 マリア・フェルナンデス 七面鳥
105 ジャスミン パリ
110 ファフ・イタチ インドネシア
120 ローマロケット ロシア

さて、テーブルが 2 つあります 注文 そしてその お客様 。があります 顧客ID 両方のテーブルに共通の列。したがって、両方のテーブルから一致するレコードを選択するための一般的な関係を定義する SQL クエリを作成します。

 Select Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName from Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID; 

上記を実行した後、 SQL クエリを実行すると、次の出力が生成されます。

注文ID 顧客名 商品名
12025 王子 台湾 ABC
12030 ジャスミン パリ XYX
12032 ファフ・イタチ インドネシア XYZ
12035 ローマロケット ロシア AAA

SQL結合の種類

SQL ではさまざまな種類の結合が使用されます。

  1. 内部結合 / 単純結合
  2. 左外部結合 / 左結合
  3. 右外部結合 / 右結合
  4. 完全外部結合
  5. クロス結合
  6. 自己結合

内部結合

内部結合は、両方のテーブルで一致するすべての行または列を選択するために、または定義された条件が SQL で有効である限り使用されます。

構文:

 Select column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column; 

次のように、ベン図を通じて内部結合を表すことができます。

SQL JOIN の種類

表 1: 学生

学生証 学生の名前 主題 教師ID
101 アレクサンドラ コンピュータサイエンス T201
102 チャールズ 経済 T202
103 トムクルーズ コンピュータサイエンス T201
104 アーロン・フィンチ エレクトロニクス T203
105 シード・バジョフ ウェブデザイン T204
106 クリストファー 英文学 T205
107 デニム ファッションデザイナー T206

表 2: 教師

教師ID 先生の名前 教師メール
T201 デイビス氏 [メールで保護されています]
T202 ジョナス夫人 [メールで保護されています]
T201 デイビス氏 [メールで保護されています]
T204 ロペス夫人 [メールで保護されています]
T205 ワイリー夫人 [メールで保護されています]
T206 ミスタービーン [メールで保護されています]

テーブルが 2 つあります。 学生 そしてその 教師 テーブル。を使用してテーブルを結合する SQL クエリを作成しましょう。 内部結合 次のように:

 Select Student_ID, StudentName, TeacherName, TeacherEmail FROM Students INNER JOIN Teachers ON Students.TeacherID = Teachers.TeacherID; 

クエリを実行すると、以下のテーブルが生成されます。

SQL JOIN の種類

自然結合

これは、同じ列名に基づいて 2 つ以上のテーブルを結合し、両方のテーブルに同じデータ型が存在する内部型の一種です。

構文:

 Select * from tablename1 Natural JOIN tablename_2; 

テーブルが 2 つあります。 学生 そしてその 教師 テーブル。を使用してテーブルを結合する SQL クエリを作成しましょう。 自然結合 次のように:

 Select * from Students Natural JOIN Teachers; 

上記のクエリを実行すると、次のテーブルが生成されます。

SQL JOIN の種類

左結合

左結合 は、左側のテーブル (table1) からすべてのレコードを取得し、右側のテーブル (table2) から一致する行または列を取得するために使用されます。両方のテーブルに一致する行または列が含まれていない場合は、NULL を返します。

構文:

 Select column_1, column_2, column(s) FROM table_1 LEFT JOIN table_2 ON table_1.column_name = table_2.column_name; 

次のように、ベン図を通じて左結合を表すこともできます。

SQL JOIN の種類

注: 一部のデータベースでは、LEFT JOIN は LEFT OUTER JOIN とも呼ばれます。

表 1: 製品の詳細

製品番号 商品名
プロ101 ラップトップ 56000
プロ102 携帯 38000
プロ103 ヘッドフォン 5000
プロ104 テレビ 25000
プロ105 iPad 60000

表 2: 顧客の詳細

UNIX と Windows
顧客名 顧客住所 顧客の年齢 製品番号
マーティン・グプティル 米国サンフランシスコ 26 プロ101
ジェームス オーストラリア 29 プロ103
アンバティ・ウィリアムソン ニュージーランド 27 プロ102
ジョフラ・アーチャー 南アフリカ 24 プロ105
ケイト・ワイリー オーストラリア 二十 プロ103

テーブルが 2 つあります。 製品詳細 そしてその お客様情報 テーブル。を使用してテーブルを結合する SQL クエリを作成しましょう。 左結合 次のように:

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID; 

クエリを実行すると、次のテーブルが生成されます。

SQL JOIN の種類

右結合 は、右側のテーブル (table2) からすべてのレコードを取得し、左側のテーブル (table1) から一致する行または列を取得するために使用されます。両方のテーブルに一致する行または列が含まれていない場合は、NULL を返します。

構文:

 Select column_1, column_2, column(s) FROM table_1 RIGHT JOIN table_2 ON table_1.column_name = table_2.column_name; 

次のように、ベン図を通じて右結合を表すこともできます。

SQL JOIN の種類

注: 一部のデータベースでは、RIGHT JOIN は RIGHT OUTER JOIN とも呼ばれます。

表 1: 製品の詳細

ID 商品名
プロ101 ラップトップ 56000
プロ102 携帯 38000
プロ103 ヘッドフォン 5000
プロ104 テレビ 25000
プロ105 iPad 60000

表 2: 顧客の詳細

顧客名 顧客住所 顧客の年齢 製品番号
マーティン・グプティル 米国サンフランシスコ 26 プロ101
ジェームス オーストラリア 29 プロ103
アンバティ・ウィリアムソン ニュージーランド 27 プロ102
ジョフラ・アーチャー 南アフリカ 24 プロ105
前兆 イングランド 29 プロ107
モーガン イングランド 二十 プロ108

テーブルが 2 つあります。 製品詳細 そしてその お客様情報 テーブル。を使用してテーブルを結合する SQL クエリを作成しましょう。 右結合 次のように:

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID; 

クエリを実行すると、以下のテーブルが生成されます。

SQL JOIN の種類

完全結合または完全外部結合:

両方の結果セットを組み合わせたものです 左結合 そして 右結合 。結合されたテーブルは両方のテーブルのすべてのレコードを返し、テーブル内に一致するものが見つからない場合は NULL を設定します。とも呼ばれます 完全外部結合

構文:

 Select column_1, column_2, column(s) FROM table_1 FULL JOIN table_2 ON table_1.column_name = table_2.column_name; 

または、 完全外部結合

 Select column_1, column_2, column(s) FROM table_1 FULL OUTER JOIN table_2 ON table_1.column_name = table_2.column_name; 

次のように、ベン図を使用して完全な外部結合を表すこともできます。

SQL JOIN の種類

表 1: 製品の詳細

ID 商品名
プロ101 ラップトップ 56000
プロ102 携帯 38000
プロ103 ヘッドフォン 5000
プロ104 テレビ 25000
プロ105 iPad 60000

表 2: 顧客の詳細

顧客名 顧客住所 顧客の年齢 製品番号
マーティン・グプティル 米国サンフランシスコ 26 プロ101
ジェームス オーストラリア 29 プロ103
アンバティ・ウィリアムソン ニュージーランド 27 プロ102
ジョフラ・アーチャー 南アフリカ 24 プロ105
前兆 イングランド 29 プロ107
モーガン イングランド 二十 プロ108

テーブルが 2 つあります。 製品詳細 そしてその お客様情報 テーブル。を使用してテーブルを結合する SQL クエリを作成しましょう。 満杯 次のように参加します。

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID; 

クエリを実行すると、以下のテーブルが生成されます。

SQL JOIN の種類

注: MySQL は FULL JOIN の概念をサポートしていないため、UNION ALL 句を使用して両方のテーブルを結合できます。

の構文は次のとおりです すべてを結合する テーブルを結合する句。

JavaでCSVを読み取る
 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID UNION ALL Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details RIGHT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID 

SQL JOIN の種類

クロスジョイン

としても知られています デカルト結合 、結合された 2 つ以上のテーブルのデカルト積を返します。の クロスジョイン 最初のテーブルの各行と 2 番目のテーブルの各行をマージするテーブルを作成します。 CROSS JOIN に条件を含める必要はありません。

構文:

 Select * from table_1 cross join table_2; 

または、

 Select column1, column2, column3 FROM table_1, table_2; 

表 1: 製品の詳細

ID 商品名
プロ101 ラップトップ 56000
プロ102 携帯 38000
プロ103 ヘッドフォン 5000
プロ104 テレビ 25000
プロ105 iPad 60000

表 2: 顧客の詳細

顧客名 顧客住所 顧客の年齢 製品番号
マーティン・グプティル 米国サンフランシスコ 26 プロ101
ジェームス オーストラリア 29 プロ103
アンバティ・ウィリアムソン ニュージーランド 27 プロ102
ジョフラ・アーチャー 南アフリカ 24 プロ105
前兆 イングランド 29 プロ107
モーガン イングランド 二十 プロ108

テーブルが 2 つあります。 製品詳細 そしてその お客様情報 テーブル。を使用してテーブルを結合する SQL クエリを作成しましょう。 満杯 次のように参加します。

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details, Customer_Details; 

クエリを実行すると、以下のテーブルが生成されます。

SQL JOIN の種類

自己参加

テーブルが2つあったので、自分自身を結合してテーブルを作成するために使用されるSELF JOINです。 SQL ステートメント内の少なくとも 1 つのテーブルに一時的な名前を付けます。

構文:

 Select column1, column2, column(s) FROM table_1 Tbl1, table_2 Tbl2 WHERE condition; 

表1 そして 表2 は、同じテーブルの 2 つの異なるテーブル エイリアスです。

表 1: 製品の詳細

ID 商品名
プロ101 ラップトップ 56000
プロ102 携帯 38000
プロ103 ヘッドフォン 5000
プロ104 テレビ 25000
プロ105 iPad 60000

を使用してテーブルを結合する SQL クエリを作成しましょう。 自己参加 次のように:

 Select TB.ID, TB.ProductName FROM Product_Details TB, Product_Details TB2 WHERE TB.AMOUNT <tb2.amount; < pre> <p>After executing the query, it produces the below table. </p> <img src="//techcodeview.com/img/sql-tutorial/44/types-sql-join-12.webp" alt="Types of SQL JOIN"> <hr></tb2.amount;>