Unione in join di tre o più tabelle
Ogni join consente di unire solo due tabelle. Tuttavia, dato che le clausole FROM possono includere più definizioni di join, è possibile unire in join numerose tabelle utilizzando la stessa query.
La tabella ProductVendor del database AdventureWorks2008R2 rappresenta un ottimo esempio di situazione in cui risulta utile unire in join più di due tabelle. La query Transact-SQL seguente viene utilizzata per trovare i nomi di tutti i prodotti di una determinata sottocategoria e i nomi dei relativi fornitori:
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;
Set di risultati:
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 righe interessate)
Si noti che il risultato non include le colonne di una delle tabelle specificate nella clausola FROM, ovvero ProductVendor, né le colonne unite in join ProductID e VendorID. È tuttavia possibile eseguire questo join solo se si utilizza ProductVendor come tabella intermedia.
La tabella di mezzo del join, ovvero la tabella ProductVendor, può essere definita tabella di trasferimento o intermedia, in quanto ProductVendor rappresenta un punto di connessione intermedio tra le altre tabelle unite in join.
Se nella stessa istruzione sono inclusi più operatori di join che consentono di unire più di due tabelle o più di due coppie di colonne, le espressioni di join possono essere concatenate tramite l'operatore AND o OR.