SQL joinは、テーブル内の列間の関係に基づいて 2 つ以上のテーブルのデータをクエリするために使用されます。
場合によっては、完全な結果を得るために、2 つ以上のテーブルから結果を取得する必要があります。 埋め込む Join
データベース内のテーブルは、キーによって相互に関連付けることができます。 主キー(Primary Key)は、各行の値が一意である列です。 テーブルでは、各主キー値は一意です。 この目的は、各テーブル内のすべてのデータを複製することなく、テーブル間でデータをクロスバンドルすることです。
"Persons" :
| Id_P | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Adams | John | Oxford Street | London |
| 2 | Bush | George | Fifth Avenue | New York |
| 3 | Carter | Thomas | Changan Street | Beijing |
"Id_P" 列が Persons テーブルの主キーであることに注意してください。 これは、2 つの行が同じ Id_P を持つことができないことを意味します。 2 人の名前がまったく同じであっても、Id_P はそれらを区別できます。
"Orders" :
| Id_O | OrderNo | Id_P |
|---|---|---|
| 1 | 77895 | 3 |
| 2 | 44678 | 3 |
| 3 | 22456 | 1 |
| 4 | 24562 | 1 |
| 5 | 34764 | 65 |
"Id_O"列は Orders テーブルの主キーですが、"Orders"テーブルの "Id_P"列は、正確な名前を付けずに"Persons"テーブル内の個人を参照するために使用されることに注意してください。 。
"Id_P"列が上記の 2 つのテーブルをリンクしていることに注意してください。
2 つのテーブルを参照することで、2 つのテーブルからデータを取得できます。
商品を注文したのは誰ですか?何を注文しましたか?
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
結果セット:
| LastName | FirstName | OrderNo |
|---|---|---|
| Adams | John | 22456 |
| Adams | John | 24562 |
| Carter | Thomas | 77895 |
| Carter | Thomas | 44678 |
上記の方法に加えて、キーワード JOIN を使用して 2 つのテーブルからデータを取得することもできます。
すべてのサブスクリプションをリストしたい場合は、次の SELECT ステートメントを使用できます。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName
結果セット:
| LastName | FirstName | OrderNo |
|---|---|---|
| Adams | John | 22456 |
| Adams | John | 24562 |
| Carter | Thomas | 77895 |
| Carter | Thomas | 44678 |
上の例で使用した INNER JOIN (内部結合) に加えて、他のいくつかの結合も使用できます。
以下は、使用できる JOIN タイプとそれらの違いのリストです。