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.