Unindo três ou mais tabelas
Embora cada especificação de junção una somente duas tabelas, as cláusulas FROM podem conter várias especificações de junção. Isso permite adicionar muitas tabelas juntas para uma única consulta.
A tabela ProductVendor do banco de dados AdventureWorks2008R2 oferece um bom exemplo de uma situação em que a união de mais de duas tabelas é útil. A consulta Transact-SQL a seguir encontra os nomes de todos os produtos que estão em uma subcategoria especifica e os nomes de seus fornecedores:
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;
Aqui está o 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 uma das tabelas na cláusula FROM, ProductVendor, não contribui com nenhuma coluna para os resultados. Também, nenhuma das colunas associadas, ProductID e VendorID, aparecem nos resultados. No entanto, essa junção só é possível usando ProductVendor como uma tabela intermediária.
A tabela intermediária da junção, a tabela ProductVendor, pode ser chamada de tabela de tradução ou tabela intermediária, porque ProductVendor é um ponto intermediário de conexão entre outras tabelas envolvidas na junção.
Quando houver mais de um operador de junção na mesma instrução, para unir mais duas de tabelas ou mais de dois pares de colunas, as expressões de junção poderão ser conectadas com AND ou com OR.