SQL joinは、テーブル内の列間の関係に基づいて 2 つ以上のテーブルのデータをクエリするために使用されます。

Join と Key

場合によっては、完全な結果を得るために、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 つのテーブルを参照することで、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

SQL JOIN - 使用 Join

上記の方法に加えて、キーワード 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

異なる SQL JOIN

上の例で使用した INNER JOIN (内部結合) に加えて、他のいくつかの結合も使用できます。

以下は、使用できる JOIN タイプとそれらの違いのリストです。

  • JOIN: テーブル内に少なくとも 1 つの一致がある場合に行を返します
  • LEFT JOIN: 右側のテーブルに一致するものがない場合でも、左側のテーブルからすべての行を返します
  • RIGHT JOIN: 左側のテーブルに一致するものがない場合でも、右側のテーブルからすべての行を返します
  • FULL JOIN: いずれかのテーブルに一致がある限り行を返します