Jointure de trois tables ou plus
Bien que chaque spécification de jointure ne joigne que deux tables, les clauses FROM peuvent contenir plusieurs spécifications de jointure. Ceci permet de joindre plusieurs tables dans une requête unique.
La table ProductVendor de la base de données AdventureWorks2008R2 constitue un exemple intéressant de l'utilité de joindre plus de deux tables. La requête Transact-SQL suivante recherche le nom de tous les produits d'une sous-catégorie particulière ainsi que le nom de leurs fournisseurs :
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;
Voici l'ensemble des résultats.
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)
Notez qu'aucune colonne de la table ProductVendor de la clause FROM ne se retrouve dans les colonnes de résultats. Les colonnes jointes, ProductID et VendorID, ne figurent pas non plus dans les résultats. Néanmoins, cette jointure n'est réalisable qu'en utilisant la table ProductVendor comme intermédiaire.
La table centrale de la jointure (ProductVendor dans la requête précédente) peut être appelée table de traduction ou table intermédiaire, étant donné que ProductVendor est un point de connexion intermédiaire entre les autres tables impliquées dans la jointure.
Lorsqu'une même instruction contient plusieurs opérateurs de jointure, pour joindre plus de deux tables ou plus de deux paires de colonnes, les conditions de jointure peuvent être reliées par AND ou OR.