Freigeben über


Verwenden von Joins

Joinbedingungen können in FROM- oder WHERE-Klauseln, sollten jedoch vorzugsweise in FROM-Klauseln angegeben werden. WHERE- und HAVING-Klauseln können ebenfalls Suchbedingungen enthalten, um die durch die Joinbedingungen ausgewählten Zeilen weiter zu filtern.

Joins können in folgende Kategorien unterteilt werden:

  • Innere Joins (der normale Joinvorgang, bei der ein Vergleichsoperator wie = oder <> verwendet wird). Zu den inneren Joins gehören Gleichheitsjoins und natürliche Joins.

    Innere Joins verwenden einen Vergleichsoperator, um Zeilen aus zwei Tabellen basierend auf den Werten in gemeinsamen Spalten beider Tabellen zu vergleichen. Ein Beispiel ist das Abrufen aller Zeilen, in denen die Studentennummer in der students- und der courses-Tabelle übereinstimmt.

  • Äußere Joins. Dies können linke, rechte und vollständige äußere Joins sein.

    Äußere Joins werden in der FROM-Klausel mit einer der folgenden Schlüsselwörtergruppen angegeben:

    • LEFT JOIN oder LEFT OUTER JOIN.

      Das Resultset eines linken äußeren Joins enthält alle Zeilen aus der in der LEFT OUTER-Klausel angegebenen linken Tabelle, nicht nur die, in denen die verknüpften Spalten übereinstimmen. Wenn für eine Zeile in der linken Tabelle keine übereinstimmenden Zeilen in der rechten Tabelle vorhanden sind, enthält die zugehörige Resultsetzeile NULL-Werte für alle Auswahllistenspalten, die aus der rechten Tabelle stammen.

    • RIGHT JOIN oder RIGHT OUTER JOIN

      Ein rechter äußerer Join ist die Umkehrung eines linken äußeren Joins. Alle Zeilen aus der rechten Tabelle werden zurückgegeben. NULL-Werte werden für die linke Tabelle zurückgegeben, wenn für eine Zeile der rechten Tabelle keine übereinstimmende Zeile in der linken Tabelle vorhanden ist.

    • FULL JOIN oder FULL OUTER JOIN

      Ein vollständiger äußerer Join gibt alle Zeilen in der linken und rechten Tabelle zurück. Wenn für eine Zeile keine Entsprechung in der anderen Tabelle vorhanden ist, enthalten die Auswahllistenspalten aus der anderen Tabelle NULL-Werte. Bei Übereinstimmungen zwischen den Tabellen enthält die gesamte Resultsetzeile Datenwerte aus den Basistabellen.

  • CROSS JOINs

    Cross Joins geben alle Zeilen der linken Tabelle zurück. Jede Zeile der linken Tabelle wird mit allen Zeilen der rechten Tabelle verknüpft. CROSS JOINs werden auch als kartesische Produkte bezeichnet.

Mit diesem inneren Join werden beispielsweise die Mitarbeiter abgerufen, die auch Vertriebsmitarbeiter sind:

USE AdventureWorks2008R2;
GO
SELECT e.BusinessEntityID
FROM HumanResources.Employee AS e
    INNER JOIN Sales.SalesPerson AS s
    ON e.BusinessEntityID = s.BusinessEntityID

Die Tabellen oder Sichten in der FROM-Klausel können mit INNER JOIN und FULL OUTER JOIN in einer beliebigen Reihenfolge angegeben werden. Bei LEFT JOIN oder RIGHT OUTER JOIN ist die Reihenfolge der angegebenen Tabellen oder Sichten jedoch von Bedeutung. Weitere Informationen zur Reihenfolge der Tabellen bei linken oder rechten äußeren Verknüpfungen finden Sie unter Verwenden von äußeren Joins.

Weitere Informationen zum Verwenden der unterschiedlichen Jointypen finden Sie in folgenden Themen: