MySQL JOIN 句
1. MySQL JOIN 句の概要
JOIN 句は、2つ以上のテーブル間に存在する関連するカラム(共通のキー)に基づいて、それらのテーブルから行を結合するために使用されます。
MySQL で利用できる主な JOIN の種類は以下の通りです:
- INNER JOIN: 両方のテーブルに一致する値がある行のみを返します。
- LEFT JOIN: 左側のテーブルのすべての行と、右側のテーブルで一致する行を返します。
- RIGHT JOIN: 右側のテーブルのすべての行と、左側のテーブルで一致する行を返します。
- CROSS JOIN: 2つ以上のテーブルのデカルト積(すべての組み合わせ)を返します。
2. テーブル間のリレーションシップの確認
まず、「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 カラムによって構築されています。
3. JOIN の使用例 (INNER JOIN)
このリレーションシップを利用して、両方のテーブルで一致する値を持つレコードを選択する SQL 文(INNER JOIN を含む)を作成できます。
-- 注文情報に顧客名を紐付けて取得するクエリ
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 |