Verknüpfen von drei oder mehr Tabellen

Obwohl Joinspezifikationen jeweils nur zwei Tabellen verknüpfen können, ist es möglich, dass FROM-Klauseln mehrere Joinspezifikationen enthalten. Auf diese Weise können viele Tabellen für eine einzige Abfrage verknüpft werden.

Die ProductVendor-Tabelle der AdventureWorks2008R2-Datenbank bietet ein anschauliches Beispiel für eine Situation, in der die Verknüpfung von mehr als zwei Tabellen hilfreich ist. Die folgende Transact-SQL-Abfrage findet die Namen aller Produkte einer bestimmten Unterkategorie und die Namen der Hersteller dieser Produkte:

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;

Dies ist das Resultset.

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 Zeile(n) betroffen)

Beachten Sie, dass eine der Tabellen in der FROM-Klausel, nämlich ProductVendor, keine Spalten zu den Ergebnissen beiträgt. Zudem wird keine der verknüpften Spalten ProductID und VendorID in den Ergebnissen angezeigt. Dieser Join ist jedoch nur möglich, wenn ProductVendor als eine Zwischentabelle verwendet wird.

Die mittlere Tabelle des Joins (die ProductVendor-Tabelle) kann als Übersetzungs- oder Zwischentabelle bezeichnet werden, da ProductVendor als Bindeglied zwischen den anderen Tabellen fungiert, die an dem Join beteiligt sind.

Wenn es in einer Anweisung mehrere Joinoperatoren gibt, um mehr als zwei Tabellen oder mehr als zwei Spaltenpaare zu verknüpfen, können die Joinausdrücke mit AND oder OR verbunden werden.