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 つの注文を見てみましょう:
| OrderID | CustomerID | OrderDate |
|---|---|---|
| 10308 | 2 | 1996-09-18 |
次に、"Customers"(顧客)テーブルの 1 つの顧客を見てみましょう:
| CustomerID | CustomerName | ContactName | Country |
|---|---|---|---|
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Mexico |
ここで、"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;このクエリを実行すると、次のような結果が生成されます:
| OrderID | CustomerName | OrderDate |
|---|---|---|
| 10308 | Ana Trujillo Emparedados y helados | 1996-09-18 |
| 10365 | Antonio Moreno Taquería | 1996-11-27 |
| 10383 | Around the Horn | 1996-11-15 |
| 10355 | Around the Horn | 1996-12-16 |
| 10278 | Berglunds snabbköp | 1996-12-16 |