Compartilhar via


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 AdventureWorks 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.VendorID = v.VendorID
WHERE ProductSubcategoryID = 15
ORDER BY v.Name

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 aos 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.