Was ist der Unterschied zwischen inneren und äußeren Verbindungen?

Sowohl innere als auch äußere Verknüpfungen werden verwendet, um Daten aus zwei oder mehr Tabellen zu kombinieren. Es gibt jedoch einige wesentliche Unterschiede! In diesem Artikel erfahren Sie, welche Stärken die einzelnen Befehle haben und wann sie verwendet werden müssen.

Um das Beste aus dieser und unseren anderen Lektionen herauszuholen, sollten Sie die Beispiele üben!

Alle Beispiele für diese Lektion basieren auf Microsoft SQL Server Management Studio und der AdventureWorks2012-Datenbank. Erste Schritte mit diesen kostenlosen Tools in meinem Handbuch Erste Schritte mit SQL Server.

Was ist der Unterschied zwischen inneren und äußeren Verknüpfungen?

Innere und äußere Verknüpfungen sind kombinierte Zeilen aus zwei oder Weitere Tabellen zu einem einzigen Ergebnis unter Verwendung einer Verknüpfungsbedingung. Die Verknüpfungsbedingung gibt an, wie Spalten aus jeder Tabelle miteinander abgeglichen werden. In den meisten Fällen besteht das Ziel darin, gleiche Werte zwischen Tabellen zu finden und diese Übereinstimmungen einzuschließen.

Der häufigste Fall hierfür ist, wenn Sie den Fremdschlüssel einer Tabelle mit dem Primärschlüssel einer anderen Tabelle abgleichen B. wenn Sie und ID zum Nachschlagen eines Werts verwenden.

Obwohl sowohl innere als auch äußere Verknüpfungen Zeilen aus beiden Tabellen enthalten, wenn die Übereinstimmungsbedingung erfolgreich ist, unterscheiden sie sich darin, wie sie mit einer falschen Übereinstimmungsbedingung umgehen.

Innere Verknüpfungen enthalten keine nicht übereinstimmenden Zeilen. Während äußere Verknüpfungen sie enthalten.

Lassen Sie uns etwas näher auf die Mechanik der einzelnen

Mechaniken für innere Verknüpfungen eingehen.

Eine innere Verknüpfung wird verwendet, um Ergebnisse zurückzugeben Durch Kombinieren von Zeilen aus zwei oder mehr Tabellen.

Im einfachsten Fall, wenn keine Verknüpfungsbedingung vorliegt, kombiniert eine innere Verknüpfung alle Zeilen einer Tabelle mit denen einer anderen. Wenn die erste Tabelle drei Zeilen und die zweite vier Zeilen enthält, enthält das Endergebnis zwölf (3 x 4 = 12)!

Der Zweck der Verknüpfungsbedingung besteht darin, zu begrenzen, welche Zeilen kombiniert werden. In den meisten Fällen beschränken wir Zeilen auf diejenigen, die einer Spalte entsprechen.

Wenn eine Person mehr als eine Telefonnummer hat, wird mehr als eine Übereinstimmung hergestellt. Daraus können Sie ersehen, dass möglicherweise mehr Zeilen zurückgegeben werden als für jede Person.

Beitrittstabellen

Wenn eine Person hingegen keine Telefonnummer hat, wird kein Eintrag in PersonPhone vorgenommen und keine Übereinstimmung erzielt. Diese bestimmte Person wird nicht in die Ergebnisse aufgenommen, da nur diejenigen mit Übereinstimmungen enthalten sind.

Versuchen wir ein Beispiel.

Beispiel für eine innere Verknüpfung

Angenommen Der Personalmanager möchte ein Telefonverzeichnis erstellen. Sie möchten den Vornamen, den Nachnamen, den Titel und die Telefonnummern der Person. Mit welcher Abfrage können Sie dies erstellen?

Hier ist eine Abfrage, die den Trick ausführt:

SELECT P.FirstName, P.LastName, P.Title, PH.PhoneNumberFROM Person.Person AS P INNER JOIN Person.PersonPhone AS PH ON P.BusinessEntityID = PH.BusinessEntityID AND PH.PhoneNumberTypeID = 3ORDER BY P.LastName

Der INNER JOIN gibt an, welche Tabellen vorhanden sind beitreten und die Match-Bedingung dafür. Die Bedingung PH.Phone NumberTyeID = 3 beschränkt die Abfrage auf Arbeitsnummern.

Wenn Sie die obigen Schritte ausführen, erhalten Sie die folgenden Ergebnisse:

Ergebnisse der inneren Verknüpfung

Beachten Sie, dass die innere Verknüpfung nur eine Zeile zurückgibt, in der die Übereinstimmungsbedingung vorliegt ist wahr. In diesem Beispiel sind die Zeilen, in denen die BusinessEntityIDs nicht übereinstimmen, nicht enthalten. Dies kann ein Problem sein, wenn eine Person keine Telefonnummer hat, da diese Mitarbeiter nicht auf der Liste stehen.

Wenn Sie diese Mitarbeiter einbeziehen möchten, können Sie einen Outer Join verwenden. P. >

Mechanik der äußeren Verknüpfung

Eine äußere Verknüpfung wird verwendet, um Ergebnisse zurückzugeben, indem Zeilen aus zwei oder mehr Tabellen kombiniert werden. Im Gegensatz zu einem inneren Join gibt der äußere Join jede Zeile aus einer angegebenen Tabelle zurück, auch wenn die Join-Bedingung fehlschlägt.

Nehmen Sie das obige Beispiel für das Telefonverzeichnis. Wenn der Personalmanager jeden Mitarbeiter auflisten wollte, unabhängig davon, ob er eine geschäftliche Telefonnummer hatte, würde die Verwendung eines äußeren Joins dies ermöglichen.

SELECT P.FirstName, P.LastName, P.Title, PH.PhoneNumberFROM Person.Person AS P LEFT OUTER JOIN Person.PersonPhone AS PH ON P.BusinessEntityID = PH.BusinessEntityID AND PH.PhoneNumberTypeID = 3ORDER BY P.LastName

Sie können Weitere Informationen zu linken und rechten äußeren Verknüpfungen finden Sie in diesem Artikel. Verstehen Sie zunächst, dass bei Verwendung eines LEFT OUTER JOIN alle Zeilen für die Tabelle in der FROM-Klausel im Ergebnis enthalten sind, auch wenn keine Übereinstimmung mit dem gefunden wird andere Tabelle.

Wenn keine Übereinstimmung gefunden wird, wird ein NULL in die Spalte eingefügt.

Sie können dies in Aktion unten sehen:

Ergebnisse der äußeren Verknüpfung

Beachten Sie im Beispiel die Die Telefonnummer für Catherine Abel ist NULL. Dies liegt daran, dass Catherines Arbeitsnummer nicht aufgeführt ist und während des Joins keine Übereinstimmung gefunden wurde.

Wenn dies ein innerer Join gewesen wäre, wäre diese Zeile nicht in den Ergebnissen enthalten gewesen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.