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 ではさまざまな種類の結合が使用されます。
内部結合
内部結合は、両方のテーブルで一致するすべての行または列を選択するために、または定義された条件が SQL で有効である限り使用されます。
構文:
Select column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
次のように、ベン図を通じて内部結合を表すことができます。
表 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;
クエリを実行すると、以下のテーブルが生成されます。
自然結合
これは、同じ列名に基づいて 2 つ以上のテーブルを結合し、両方のテーブルに同じデータ型が存在する内部型の一種です。
構文:
Select * from tablename1 Natural JOIN tablename_2;
テーブルが 2 つあります。 学生 そしてその 教師 テーブル。を使用してテーブルを結合する SQL クエリを作成しましょう。 自然結合 次のように:
Select * from Students Natural JOIN Teachers;
上記のクエリを実行すると、次のテーブルが生成されます。
左結合
の 左結合 は、左側のテーブル (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;
次のように、ベン図を通じて左結合を表すこともできます。
注: 一部のデータベースでは、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;
クエリを実行すると、次のテーブルが生成されます。
右結合または右外部結合:
の 右結合 は、右側のテーブル (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;
次のように、ベン図を通じて右結合を表すこともできます。
注: 一部のデータベースでは、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;
クエリを実行すると、以下のテーブルが生成されます。
完全結合または完全外部結合:
両方の結果セットを組み合わせたものです 左結合 そして 右結合 。結合されたテーブルは両方のテーブルのすべてのレコードを返し、テーブル内に一致するものが見つからない場合は 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;
次のように、ベン図を使用して完全な外部結合を表すこともできます。
表 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;
クエリを実行すると、以下のテーブルが生成されます。
注: 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
クロスジョイン
としても知られています デカルト結合 、結合された 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;
クエリを実行すると、以下のテーブルが生成されます。
自己参加
テーブルが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;>