Share via


聯結三或多個資料表

雖然每個聯結規格 (Join Specification) 都只聯結兩個資料表,但 FROM 子句可包含多個聯結規格。這可讓許多資料表聯結於一個查詢之中。

AdventureWorks 資料庫的 ProductVendor 資料表提供了一個很好的情況範例,它說明聯結兩個以上的資料表的確有好處。下列 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 子句的資料表之一 ProductVendor 並沒有提供任何資料行給結果。此外,聯結的資料行 ProductID 和 VendorID 也沒有出現在結果中。但是,此聯結只有使用 ProductVendor 做為中繼資料表時才能完成。

聯結的中間資料表 (ProductVendor 資料表) 可稱為轉譯資料表 (Translaton Table) 或中繼資料表 (Intermedidate Table),因為 ProductVendor 是聯結中其他資料表的連接中繼點。

若同一個陳述式中有多個聯結運算子,不管是聯結兩個以上的資料表或聯結兩對以上的資料行,聯結運算式都可透過 AND 或 OR 來連接。