Combinar tres o más tablas

Si bien cada especificación de combinación sólo combina dos tablas, las cláusulas FROM pueden contener varias especificaciones de combinaciones. Esto permite que se combinen muchas tablas en una consulta única.

La tabla ProductVendor de la base de datos AdventureWorks ofrece un buen ejemplo de una situación en la que resulta útil combinar más de dos tablas. La siguiente consulta Transact-SQL busca los nombres de todos los productos de una subcategoría determinada y los nombres de sus proveedores:

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

Éste es el conjunto de resultados.

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)

Observe que una de las tablas de la cláusula FROM, ProductVendor, no aporta ninguna columna al resultado. Tampoco aparece en el resultado ninguna de las columnas combinadas, ProductID y VendorID. Sin embargo, esta combinación sólo es posible si se utiliza ProductVendor como una tabla intermedia.

La tabla del medio de la combinación, la tabla ProductVendor, se puede denominar tabla de traducción o tabla intermedia, puesto que ProductVendor es un punto intermedio de conexión entre las demás tablas involucradas en la combinación.

Cuando hay más de un operador de combinación en la misma instrucción, ya sea para combinar más de dos tablas o para combinar más de dos pares de columnas, las expresiones de combinación se pueden conectar con AND o con OR.