Share via


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 の列は、結果に現れていないことに注意してください。また、結合された列、ProductIDVendorID のいずれも、結果には含まれません。ただし、この結合は ProductVendor を中間テーブルとして使うだけで、実現されています。

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

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

参照

その他の技術情報

WHERE (Transact-SQL)
SELECT (Transact-SQL)
演算子 (Transact-SQL)
SELECT の例 (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手