Share via


聯結三或多個資料表

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

AdventureWorks2008R2 資料庫的 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.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 子句的其中一個資料表 ProductVendor 並沒有提供任何資料行給結果。此外,聯結的資料行 ProductID 和 VendorID 也沒有出現在結果中。但是,此聯結只有使用 ProductVendor 做為中繼資料表時才能完成。

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

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