Соединение трех и более таблиц
Хотя в операции соединения указываются всего две таблицы, предложение FROM может содержать несколько операций объединения. Это позволяет соединять в одном запросе несколько таблиц.
Таблица ProductVendor базы данных AdventureWorks является хорошим примером ситуации, в которой может понадобиться соединение более двух таблиц. Следующий запрос 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.VendorID = v.VendorID
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 row(s) affected)
Обратите внимание, что одна из таблиц в предложении FROM, ProductVendor, не включает в результаты ни одного из своих столбцов. Кроме того, ни один из соединяемых столбцов — ни ProductID, ни VendorID, не включается в результаты. Тем не менее, соединение возможно только при использовании ProductVendor в качестве промежуточной таблицы.
Среднюю таблицу соединения, ProductVendor, можно назвать таблицей преобразования, или промежуточной таблицей, так как ProductVendor является промежуточной точкой объединения, которая находится между двумя другими участвующими в объединении таблицами.
При наличии в инструкции нескольких операторов соединения, применяющихся либо при соединении более двух таблиц, либо при соединении более двух пар столбцов, выражения соединения могут быть связаны операторами AND или OR.
См. также