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 AdventureWorks 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.VendorID = v.VendorID
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 row(s) affected)

Si noti che il risultato non include né 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.

Vedere anche

Altre risorse

WHERE (Transact-SQL)
SELECT (Transact-SQL)
Operatori (Transact-SQL)
Esempi di istruzioni SELECT (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005