SQL 速習チュートリアル

SQL JOIN(結合)

1. SQL JOIN 句とは?

JOIN 句は、2つ以上のテーブル間に存在する関連するカラムに基づいて、それらの行を組み合わせるために使用されます。

2. SQL における JOIN の種類

SQL には、主に以下の異なる種類の JOIN が存在します。

  • (INNER) JOIN: 両方のテーブルで一致する値を持つレコードのみをリターンします。
  • LEFT (OUTER) JOIN: 左側のテーブルのすべてのレコードと、右側のテーブルで一致したレコードをリターンします。
  • RIGHT (OUTER) JOIN: 右側のテーブルのすべてのレコードと、左側のテーブルで一致したレコードをリターンします。
  • FULL (OUTER) JOIN: 左側または右側のテーブルのいずれかに一致がある場合に、すべてのレコードをリターンします。

3. テーブル間のリレーションシップ

まず、"Orders"(注文)テーブルの 1 つの注文を見てみましょう:

OrderIDCustomerIDOrderDate
1030821996-09-18

次に、"Customers"(顧客)テーブルの 1 つの顧客を見てみましょう:

CustomerIDCustomerNameContactNameCountry
2Ana Trujillo Emparedados y heladosAna TrujilloMexico

ここで、"Orders" テーブルの "CustomerID" カラムは、"Customers" テーブルの "CustomerID" を参照していることがわかります。上記の 2 つのテーブル間の関係(リレーションシップ)は、この "CustomerID" カラムによって成り立っています。

4. INNER JOIN の実行例

この関係性を利用して、両方のテーブルで一致する値を持つレコードを選択する INNER JOIN を含む SQL ステートメントを作成できます。

4.1 例(自分専用の SQL Server を取得)

-- Orders テーブルと Customers テーブルを CustomerID で結合し、情報を取得 --
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

このクエリを実行すると、次のような結果が生成されます:

OrderIDCustomerNameOrderDate
10308Ana Trujillo Emparedados y helados1996-09-18
10365Antonio Moreno Taquería1996-11-27
10383Around the Horn1996-11-15
10355Around the Horn1996-12-16
10278Berglunds snabbköp1996-12-16