JOINS in SQL Server: Typen mit Beispielen

โšก Intelligente Zusammenfassung

Mit JOINs in SQL Server werden Zeilen aus zwei oder mehr Tabellen anhand einer verknรผpften Spalte kombiniert. Dabei werden INNER, LEFT OUTER, RIGHT OUTER und FULL OUTER Joins verwendet, um zu steuern, welche รผbereinstimmenden und nicht รผbereinstimmenden Zeilen im Ergebnis erscheinen.

  • ๐Ÿ”— Zweck: Ein JOIN ruft zusammengehรถrige Daten aus zwei oder mehr Tabellen ab, indem er eine gemeinsame Spalte, in der Regel einen Schlรผssel, abgleicht.
  • ๐ŸŽฏ INNERE VERBINDUNG: INNER JOIN gibt nur die Zeilen zurรผck, in denen die Join-Bedingung in beiden Tabellen wahr ist.
  • โฌ…๏ธ LINKER ร„USSERER JOIN: LEFT OUTER JOIN gibt jede Zeile der linken Tabelle zurรผck und fรผllt nicht รผbereinstimmende Spalten der rechten Tabelle mit NULL auf.
  • โžก๏ธ RECHTER ร„USSERER JOIN: RIGHT OUTER JOIN gibt jede Zeile aus der rechten Tabelle zurรผck und fรผllt nicht รผbereinstimmende Spalten der linken Tabelle mit NULL auf.
  • ๐Ÿ”„ VOLLSTร„NDIGER OUTER JOIN: FULL OUTER JOIN gibt alle Zeilen aus beiden Tabellen zurรผck und verwendet NULL, wo immer die Bedingung nicht erfรผllt ist.
  • ๐Ÿ”‘ EIN Zustand: Die ON-Klausel benennt die Spalten, die die Tabellen verknรผpfen, meistens ein Primรคrschlรผssel- und ein Fremdschlรผsselpaar.

JOINs in SQL Server: Beispiele fรผr INNER, LEFT, RIGHT und FULL OUTER JOIN

Was sind Joins in SQL Server?

Daten kรถnnen mithilfe der JOIN-Anweisung aus mehr als einer Tabelle abgerufen werden. SQL ServerEin JOIN kombiniert Zeilen aus zwei oder mehr Tabellen anhand einer gemeinsamen Spalte, meistens einer Spalte im Datensatz. Primรคrschlรผssel abgestimmt auf FremdschlรผsselIn SQL Server gibt es im Wesentlichen vier Arten von JOINs:

  • INNER JOIN / einfacher Join
  • LEFT OUTER JOIN / LEFT JOIN
  • RIGHT OUTER JOIN / RIGHT JOIN
  • KOMPLETTE AUSSENVERBINDUNG

Die folgende Tabelle fasst zusammen, welche Zeilen die einzelnen JOIN-Typen zurรผckgeben:

JOIN-Typ zurรผckgegebene Zeilen
INNER JOIN Nur Zeilen, in denen die Verknรผpfungsbedingung in beiden Tabellen erfรผllt ist.
LEFT OUTER JOIN Alle Zeilen aus der linken Tabelle sowie die entsprechenden Zeilen aus der rechten Tabelle (NULL-Werte, falls keine รœbereinstimmung vorliegt).
RECHTER ร„USSERER JOIN Alle Zeilen aus der rechten Tabelle sowie die entsprechenden Zeilen aus der linken Tabelle (NULL-Werte, falls keine รœbereinstimmung vorliegt).
KOMPLETTE AUSSENVERBINDUNG Alle Zeilen aus beiden Tabellen, wobei NULL-Werte รผberall dort eingefรผgt werden, wo die Bedingung nicht erfรผllt ist.

Die folgenden Beispiele verwenden zwei TabellenDie Daten zu Studierenden und Gebรผhren wurden รผber die gemeinsame Spalte fรผr die Zulassung verknรผpft. Jeder Abschnitt erlรคutert einen JOIN-Typ mit seiner Syntax, einer Beispielabfrage und dem Ergebnis.

INNER JOIN

Diese Art von SQL Server JOIN gibt Zeilen aus allen Tabellen zurรผck, in denen die Verknรผpfungsbedingung erfรผllt ist. Die Syntax lautet wie folgt:

SELECT columns
FROM table_1 
INNER JOIN table_2
ON table_1.column = table_2.column;

Wir werden dies anhand der folgenden zwei Tabellen veranschaulichen. Die untenstehende Tabelle โ€žStudentenโ€œ listet jeden Studenten und seine Zulassungsnummer auf:

Tabelle der Studierenden mit den Spalten Zulassungsnummer, Vorname und Nachname

Die untenstehende Gebรผhrentabelle zeigt den Betrag, der fรผr jede Eintrittsnummer gezahlt wurde:

Gebรผhrentabelle mit Angabe der Eintrittsnummern und der Spalte โ€žBetrag_bezahltโ€œ

Der folgende Befehl demonstriert einen INNER JOIN in SQL Server anhand eines Beispiels:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

Der Befehl liefert folgendes Ergebnis, das nur die in beiden Tabellen vorhandenen Zulassungsnummern anzeigt:

INNER JOIN-Ergebnis, das nur die Studierenden anzeigt, deren Zulassung in beiden Tabellen erscheint

Wir kรถnnen erkennen, welche Studierenden ihre Gebรผhren bezahlt haben. Dazu haben wir die Spalte mit รผbereinstimmenden Werten in beiden Tabellen verwendet, nรคmlich die Zulassungsspalte.

LEFT OUTER JOIN

Diese Art von Join gibt alle Zeilen der linken Tabelle sowie die Datensรคtze der rechten Tabelle mit รผbereinstimmenden Werten zurรผck. Zum Beispiel:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

Der Code liefert folgendes Ergebnis, keeping jeder Student, auch wenn kein Gebรผhrennachweis รผbereinstimmt:

LEFT OUTER JOIN result keeping Jeder Student rudert mit NULL fรผr unรผbertroffene Gebรผhren

Die Datensรคtze ohne รผbereinstimmende Werte werden in den entsprechenden Spalten durch NULL-Werte ersetzt.

RECHTER ร„USSERER JOIN

Dieser Join-Typ gibt alle Zeilen aus der rechten Tabelle zurรผck und nur diejenigen mit รผbereinstimmenden Werten in der linken Tabelle. Zum Beispiel:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
RIGHT OUTER JOIN Fee
ON Students.admission = Fee.admission

Die Anweisung fรผr OUTER JOINS in SQL Server liefert folgendes Ergebnis:

Ergebnis RIGHT OUTER JOIN keeping jede Gebรผhrenzeile und die entsprechenden Studentenzeilen

Der Grund fรผr die obige Ausgabe ist, dass alle Zeilen in der Gebรผhrentabelle in der Studententabelle verfรผgbar sind, wenn sie in der Zulassungsspalte abgeglichen werden.

KOMPLETTE AUSSENVERBINDUNG

Diese Art von Join gibt alle Zeilen aus beiden Tabellen zurรผck, wobei NULL-Werte รผberall dort verwendet werden, wo die JOIN-Bedingung nicht erfรผllt ist. Zum Beispiel:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
FULL OUTER JOIN Fee
ON Students.admission = Fee.admission

Der Code liefert fรผr FULL OUTER JOIN-Abfragen folgendes Ergebnis zurรผck: SQL, indem jede Zeile aus beiden Tabellen kombiniert wird:

Ergebnis des FULL OUTER JOIN, bei dem alle Zeilen fรผr Studenten und Gebรผhren mit NULL-Werten fรผr Lรผcken kombiniert werden.

Hรคufig gestellte Fragen

Ein CROSS JOIN liefert das kartesische Produkt zweier Tabellen, indem jede Zeile der ersten Tabelle mit jeder Zeile der zweiten Tabelle verknรผpft wird. Da keine ON-Bedingung erforderlich ist, ergeben eine Tabelle mit 10 Zeilen und eine Tabelle mit 5 Zeilen insgesamt 50 Zeilen.

Sie verwenden einen SELF JOIN: Die Tabelle wird zweimal mit unterschiedlichen Aliasen aufgelistet und anschlieรŸend รผber eine zugehรถrige Spalte verknรผpft, um Zeilen innerhalb derselben Tabelle zu vergleichen. Dies ist รผblich fรผr hierarchische Daten, beispielsweise um jeden Mitarbeiter seinem Vorgesetzten zuzuordnen.

Ein JOIN verknรผpft Spalten aus verwandten Tabellen nebeneinander und gleicht Zeilen anhand einer Bedingung ab. UNION stapelt die Ergebnisse zweier SELECT-Abfragen vertikal und fรผgt Zeilen hinzu. JOIN verbreitert das Ergebnis; UNION verlรคngert es.

Ja. Die ON-Klausel kann mehrere Spalten mit AND verknรผpfen, zum Beispiel ON a.col1 = b.col1 AND a.col2 = b.col2. Zusammengesetzte Bedingungen sind รผblich, wenn eine einzelne Spalte eine Zeile nicht eindeutig identifiziert.

Die ON-Klausel definiert, wie die Tabellen abgeglichen werden und wird wรคhrend der Ausfรผhrung des Joins angewendet. Die WHERE-Klausel filtert das kombinierte Ergebnis anschlieรŸend. Bei OUTER JOINs kann das Verschieben einer Bedingung zwischen den Tabellen die zurรผckgegebenen Zeilen verรคndern.

Ja. Die Anweisung JOIN ohne Prรคfix fรผhrt standardmรครŸig zu INNER JOIN und gibt daher nur รผbereinstimmende Zeilen zurรผck. Durch Hinzufรผgen von LEFT, RIGHT oder FULL vor OUTER JOIN wird festgelegt, welche nicht รผbereinstimmenden Zeilen im Ergebnis beibehalten werden.

Ja. GitHub-Copilot Sie kรถnnen INNER-, LEFT-, RIGHT- und FULL OUTER JOIN-Abfragen anhand einer natรผrlichsprachlichen Eingabeaufforderung erstellen. รœberprรผfen Sie stets die ON-Bedingung und den Join-Typ, damit das Ergebnis Ihren Erwartungen entspricht.

KI- und Machine-Learning-Assistenten schlagen den korrekten Join-Typ vor, generieren ON-Bedingungen fรผr mehrere Tabellen und kennzeichnen fehlende Schlรผssel oder versehentliche kartesische Produkte. Sie kรถnnen auch Indizes fรผr Join-Spalten empfehlen. Der Entwickler รผberprรผft jeden Vorschlag, bevor er ihn ausfรผhrt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: