3 つ以上のテーブルの結合
結合の指定により 2 つのテーブルだけが結合される場合、FROM 句に複数の結合の指定を含めることができます。これにより、1 つのクエリで複数のテーブルを結合できます。
AdventureWorks データベースの ProductVendor テーブルは、2 つ以上のテーブルの結合が役に立つことを示すよい例です。次の Transact-SQL クエリでは、特定のサブカテゴリのすべての製品名とそのベンダ名が検索されます。
SELECT p.Name, v.Name
FROM Production.Product p
JOIN Purchasing.ProductVendor pv
ON p.ProductID = pv.ProductID
JOIN Purchasing.Vendor v
ON pv.VendorID = v.VendorID
WHERE ProductSubcategoryID = 15
ORDER BY v.Name
以下に結果セットを示します。
Name Name
LL Mountain Seat/Saddle Chicago City Saddles
ML Mountain Seat/Saddle Chicago City Saddles
HL Mountain Seat/Saddle Chicago City Saddles
LL Road Seat/Saddle Chicago City Saddles
ML Road Seat/Saddle Chicago City Saddles
HL Road Seat/Saddle Chicago City Saddles
LL Touring Seat/Saddle Chicago City Saddles
ML Touring Seat/Saddle Chicago City Saddles
HL Touring Seat/Saddle Chicago City Saddles
HL Touring Seat/Saddle Expert Bike Co
ML Touring Seat/Saddle Expert Bike Co
LL Touring Seat/Saddle Expert Bike Co
HL Road Seat/Saddle First Rate Bicycles
LL Mountain Seat/Saddle First Rate Bicycles
ML Mountain Seat/Saddle First Rate Bicycles
LL Road Seat/Saddle Hill's Bicycle Service
ML Road Seat/Saddle Hill's Bicycle Service
HL Mountain Seat/Saddle Hybrid Bicycle Center
(18 row(s) affected)
FROM 句の中のテーブルの 1 つ、ProductVendor の列は、結果に現れていないことに注意してください。また、結合された列、ProductID と VendorID のいずれも、結果には含まれません。ただし、この結合は ProductVendor を中間テーブルとして使うだけで、実現されています。
結合の中間にあるテーブル、つまり ProductVendor テーブルは、変換テーブルまたは中間テーブルと呼ぶことができます。ProductVendor テーブルは、結合に含まれるそれ以外のテーブルの間の中間接続点にあるからです。
3 つ以上のテーブルを結合するため、または 3 対以上の列を結合するために、同じステートメント内で複数の結合演算子を使う場合は、結合式を AND または OR で連結できます。