Partager via


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 AdventureWorks 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.VendorID = v.VendorID
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.