So verwenden Kreuz verbinden, Join Natural und Join-Bedingung in SQL

SQL unterstützt eine Reihe von Verknüpfungstypen. Die beste in einer gegebenen Situation zu wählen, hängt von dem Ergebnis, das Sie erreichen wollen. Hier sind einige Details, die Sie wählen können, welche Sie brauchen.

Menu

Kreuz beitreten

CROSS JOIN für die Grund ist das Schlüsselwort ohne eine Join WOHER Klausel. Deswegen

SELECT * FROM Mitarbeiter, AUSGLEICH -

kann auch geschrieben werden als

SELECT * FROM Mitarbeiter CROSS AUSGLEICH JOIN -

Das Ergebnis ist das kartesische Produkt (auch genannt das Kreuzprodukt) Der beiden Quelltabellen. CROSS JOIN selten gibt Ihnen das Endergebnis Sie wollen, aber es kann als erster Schritt in einer Kette von Datenmanipulationsoperationen, die letztlich produzieren das gewünschte Ergebnis nützlich sein.

Natürliche beitreten

Das natürliche beitreten ein Sonderfall eines ist gleichwinklig verbinden. In dem WOHER Klausel einer Equi-Join, eine Säule aus einer Hand Tabelle wird auf Gleichheit mit einer Spalte einer zweiten Quelltabelle verglichen. Die beiden Spalten müssen die gleiche Art und Länge sein und den gleichen Namen haben müssen.

In der Tat, in einem natürlichen Join alle Spalten in einer Tabelle, die die gleichen Namen, Typen und Längen als entsprechende Spalten in der zweiten Tabelle haben auf Gleichheit verglichen.

Stellen Sie sich vor, dass die Kompensationstabelle aus dem vorherigen Beispiel hat Spalten EmpID, Gehalt, und Bonus eher, als Beschäftigen, Gehalt, und Bonus. In diesem Fall können Sie einen natürlichen Join der Kompensationstabelle mit der Tabelle EMPLOYEE auszuführen. Das traditionelle BEITRETEN Syntax würde wie folgt aussehen:

SELECT E. *, C.Salary, C.BonusFROM ARBEITNEHMER E, AUSGLEICH CWHERE E.EmpID = C.EmpID -

Diese Abfrage ist ein Spezialfall eines natürlichen verbinden. Das WÄHLEN Anweisung wird wieder verbunden Zeilen, in denen E.EmpID = C.EmpID. Folgendes berücksichtigen:

SELECT E. *, C.Salary, C.BonusFROM ARBEITNEHMER E NATURAL JOIN AUSGLEICH C -

Diese Abfrage wird beitreten Zeilen, in denen E.EmpID = C.EmpID, woher e.salary = C.Salary, und wo E.Bonus = C.Bonus. Die Ergebnistabelle enthält nur Zeilen, in denen alle entsprechenden Spalten übereinstimmen. In diesem Beispiel werden die Ergebnisse der beiden Abfragen gleich, weil die Tabelle EMPLOYEE nicht entweder ein nicht enthält Gehalt oder ein Bonus Spalte.

Bedingung beitreten

EIN Join-Bedingung ist wie ein Equi-Join, mit Ausnahme der Bedingung, nicht eine Gleichheit sein muss getestet haben (obwohl es sein kann). Es kann jede beliebige wohlgeformte Prädikat sein. Wenn die Bedingung erfüllt ist, dann wird die entsprechende Zeile Teil der Ergebnistabelle. Die Syntax ist ein wenig anders aus, was Sie bisher gesehen haben: Die Bedingung ist in einem enthalten sind AUF Klausel nicht in einem WOHER Klausel.

Sagen Sie, dass ein Baseball-Statistiker wissen will, welche National League Pitcher die gleiche Anzahl von kompletten Spielen als eine oder mehrere American League Pitcher aufgeschlagen haben. Diese Frage ist ein Job für ein Equi-Join, die auch mit bedingungs Join-Syntax ausgedrückt werden kann:

SELECT * FROM NATIONAL JOIN AMERICANON NATIONAL.CompleteGames = AMERICAN.CompleteGames -

Menü