3 つ以上のテーブルの結合

結合の指定により 2 つのテーブルだけが結合される場合、FROM 句に複数の結合の指定を含めることができます。これにより、1 つのクエリで複数のテーブルを結合できます。

AdventureWorks2008R2 データベースの 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.BusinessEntityID = v.BusinessEntityID
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 行処理されました)

FROM 句の中のテーブルの 1 つ、ProductVendor の列は、結果に現れていないことに注意してください。また、結合された列、ProductID と VendorID のいずれも、結果には含まれません。ただし、この結合は ProductVendor を中間テーブルとして使うだけで、実現されています。

結合の中間にあるテーブル、つまり ProductVendor テーブルは、変換テーブルまたは中間テーブルと呼ぶことができます。ProductVendor テーブルは、結合に含まれるそれ以外のテーブルの間の中間接続点にあるからです。

3 つ以上のテーブルを結合するため、または 3 対以上の列を結合するために、同じステートメント内で複数の結合演算子を使う場合は、結合式を AND または OR で連結できます。