次の方法で共有


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 で連結できます。