SQL RIGHT JOIN
1. SQL RIGHT JOIN の概要
RIGHT JOIN キーワードは、右側のテーブル(table2)の全レコードと、左側のテーブル(table1)のマッチしたレコードを返します。
左側のテーブルにマッチするレコードがない場合、結果セットの左側テーブルのカラムには NULL が入ります。
なお、RIGHT JOIN と RIGHT OUTER JOIN キーワードは同一であり、OUTER キーワードは省略可能です。
2. RIGHT JOIN の構文
SELECT カラム名
FROM テーブル1
RIGHT JOIN テーブル2
ON テーブル1.カラム名 = テーブル2.カラム名; 注意: このシンタックスは、関連カラム(Related column)に基づいて2つのテーブルを結合します。マッチングの条件を指定するには ON キーワードを使用します。
3. デモ用データベース
以下は「Orders(注文)」テーブルからの抜粋です:
| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
|---|---|---|---|---|
| 10308 | 2 | 7 | 1996-09-18 | 3 |
| 10309 | 37 | 3 | 1996-09-19 | 1 |
| 10310 | 77 | 8 | 1996-09-20 | 2 |
次は「Employees(従業員)」テーブルからの抜粋です:
| EmployeeID | LastName | FirstName | BirthDate | Photo |
|---|---|---|---|---|
| 1 | Davolio | Nancy | 1968-12-08 | EmpID1.pic |
| 2 | Fuller | Andrew | 1952-02-19 | EmpID2.pic |
| 3 | Leverling | Janet | 1963-08-30 | EmpID3.pic |
ここで、上記2つのテーブル間の関連カラムは「EmployeeID」カラムであることがわかります。
4. SQL RIGHT JOIN の実装例
以下の SQL は、すべての従業員と、その従業員が担当した可能性のある注文をすべて返します。
4.1 基本的な RIGHT JOIN の例
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID; 注意: RIGHT JOIN キーワードは、左側のテーブル(Orders)にマッチするデータがない場合でも、右側のテーブル(Employees)のすべてのレコードを返します。これにより、注文を一度も担当していない従業員もリストに含まれることになります。