Соединение трех и более таблиц

Хотя в операции соединения указываются всего две таблицы, предложение FROM может содержать несколько операций объединения. Это позволяет соединять в одном запросе несколько таблиц.

Таблица ProductVendor базы данных База данных AdventureWorks2008R2 является хорошим примером ситуации, в которой может понадобиться соединение более двух таблиц. Следующий запрос Transact-SQL выполняет поиск наименований всех продуктов определенной подкатегории и имена поставщиков этих продуктов:

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;

Ниже приводится результирующий набор.

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)

Обратите внимание, что одна из таблиц в предложении FROM, ProductVendor, не включает в результаты ни одного из своих столбцов. Кроме того, ни один из соединяемых столбцов — ни ProductID, ни VendorID, не включается в результаты. Тем не менее, соединение возможно только при использовании ProductVendor в качестве промежуточной таблицы.

Среднюю таблицу соединения, ProductVendor, можно назвать таблицей преобразования, или промежуточной таблицей, так как ProductVendor является промежуточной точкой объединения, которая находится между двумя другими участвующими в объединении таблицами.

При наличии в инструкции нескольких операторов соединения, применяющихся либо при соединении более двух таблиц, либо при соединении более двух пар столбцов, выражения соединения могут быть связаны операторами AND или OR.