SQLJOINキーワード
内部結合
このINNER JOIN
コマンドは、両方のテーブルで値が一致する行を返します。
次のSQLは、顧客情報を含むすべての注文を選択します。
例
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN
Customers ON Orders.CustomerID = Customers.CustomerID;
注: INNER JOINキーワードは、列が一致する限り、両方のテーブルからすべての行を選択します。「注文」テーブルに「顧客」に一致するレコードがない場合、これらの注文は表示されません。
次のSQLステートメントは、顧客と配送業者の情報を含むすべての注文を選択します。
例
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM
((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);
左結合
このLEFT JOIN
コマンドは、左側のテーブルからすべての行を返し、右側のテーブルから一致する行を返します。一致するものがない場合、結果は右側からNULLになります。
次のSQLは、すべての顧客と、顧客が持つ可能性のあるすべての注文を選択します。
例
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;
注:このLEFT JOIN
キーワードは、右側のテーブル(Orders)に一致するものがない場合でも、左側のテーブル(Customers)からすべてのレコードを返します。
右結合
このRIGHT JOIN
コマンドは、右側のテーブルからすべての行を返し、左側のテーブルから一致するレコードを返します。一致するものがない場合、結果は左側からNULLになります。
次のSQLは、すべての従業員と、従業員が行った可能性のあるすべての注文を返します。
例
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)からすべてのレコードを返します。
完全外部結合
FULL OUTER JOIN
左側のテーブルまたは右側のテーブルのいずれかに一致するものがある場合、コマンドはすべての行を返します。
次のSQLステートメントは、すべての顧客とすべての注文を選択します。
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
注:このFULL OUTER JOIN
キーワードは、左側のテーブル(Customers)のすべての行と、右側のテーブル(Orders)のすべての行を返します。「注文」に一致しない行が「顧客」にある場合、または「顧客」に一致しない行が「注文」にある場合、それらの行もリストされます。