Articles

SQL CROSS JOIN

Posted on

Der SQL Cross Join liefert das kartesische Produkt beider Tabellen. Kartesisches Produkt bedeutet Anzahl der Zeilen in Tabelle 1 multipliziert mit Anzahl der Zeilen in Tabelle 2. Der SQL Server Cross Join benötigt keine gemeinsame Spalte, um zwei Tabellen zu verbinden. Sehen wir uns zum besseren Verständnis die visuelle Darstellung des Cross Join an.

SQL CROSS JOIN Chart

Aus dem obigen Screenshot können Sie leicht erkennen, dass SQL Server Cross Join das kartesische Produkt zweier Tabellen anzeigt. Das bedeutet, dass jeder Datensatz in Tabelle A mit jedem Datensatz in Tabelle B kombiniert wird

SQL Cross Join Syntax

Die Syntax des Cross Join in SQL Server lautet

-- SQL Server Cross Join SyntaxSELECT Table1.Column(s), Table2.Column(s),FROM Table1 CROSS JOIN Table2 --OR We can Simply Write it asSELECT Table1. Column(s), Table2. Column(s),FROM Table1, Table2 

Für dieses SQL Server Cross Join Beispiel verwenden wir zwei Tabellen (Mitarbeiter und Abteilung). Die Daten in der Tabelle Mitarbeiter

SQL CROSS JOIN Beispiel

Die Daten in der SQL Server Tabelle Abteilung sind:

SQL CROSS JOIN

SQL Cross Join Select * Beispiel

Die folgende Cross Join Abfrage zeigt alle vorhandenen Spalten in einer Mitarbeiter-& Abteilungs-Tabelle an

-- SQL Server Cross Join ExampleUSE SQLTESTGOSELECT * FROM CROSS JOIN ;

Wenn Sie den folgenden Join-Screenshot betrachten, Es werden 120 Datensätze angezeigt. Das bedeutet, dass 15 Zeilen aus der Tabelle „Employee“ mit 8 Zeilen in der Tabelle „Department“ multipliziert werden

SQL CROSS JOIN 3

Hinweis: Ich schlage vor, dass Sie einzelne Spaltennamen auswählen. Bitte vermeiden Sie die SELECT * Anweisung im Cross Join, um unerwünschte Spalten wie id, DeptID, id, etc. zu vermeiden.

SQL Cross Join Select Few Columns Example

Wie bereits erwähnt, wählen Sie bitte die benötigten Spalten nach der SELECT Anweisung aus, um unerwünschte Spalten zu vermeiden. Die folgende Cross-Join-Abfrage zeigt das kartesische Produkt der Spalten an, die in den Tabellen „Mitarbeiter“ und „Abteilung“ vorhanden sind.

-- SQL Server Cross Join ExampleUSE SQLTESTGOSELECT , ,FROM CROSS JOIN 
SQL CROSS JOIN 4

SQL Cross Join Zweideutige Spalten

Die obige Transact-Abfrage funktioniert einwandfrei, wenn die Spaltennamen der beiden Tabellen (Mitarbeiter und Abteilung) unterschiedlich sind, wie oben beschrieben. Was passiert, wenn die Spaltennamen in beiden Tabellen gleich sind? Nun, mit dem oben beschriebenen Ansatz werden Sie mit einem Fehler enden.

Lassen Sie mich Ihnen ein praktisches Beispiel zeigen. Wir haben id aus der Tabelle department als zusätzliche Spalte zur obigen Abfrage hinzugefügt.

-- SQL Server Cross Join ExampleUSE SQLTESTGOSELECT , ,id ,FROM CROSS JOIN 

Wie Sie sehen, wird ein Fehler ausgegeben: Zweideutiger Spaltenname id. Das liegt daran, dass die Spalte id sowohl in der Tabelle „Mitarbeiter“ als auch in der Tabelle „Abteilung“ vorhanden ist. Und SQL Server weiß nicht, welche Spalte er abrufen soll.

SQL CROSS JOIN 5

Um diese Art von Problemen zu lösen, müssen Sie immer den Tabellennamen vor dem Spaltennamen verwenden. In der folgenden Cross-Join-Abfrage wird der ALIAS-Tabellenname vor den Spaltennamen verwendet. Auf diese Weise können wir dem Server mitteilen, dass wir nach der Spalte id suchen, die zur Tabelle department gehört.

Wir können die obige Cross-Join-Abfrage wie folgt schreiben:

-- SQL Server Cross Join ExampleSELECT Emp. ,Emp. ,Dept.id ,Dept.FROM AS EmpCROSS JOIN AS Dept
SQL CROSS JOIN 6

Cross Join ohne Join-Schlüsselwort

Sie können das Schlüsselwort CROSS JOIN auch vermeiden, um das Ergebnis zu erhalten.

-- SQL Server Cross Join ExampleSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp,CROSS JOIN AS Dept--OR We Can simply Write it asSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp, AS Dept
SQL CROSS JOIN 1

SQL Cross-Join Where-Klausel

Wir können die Where-Klausel zusammen mit dem Cross-Join verwenden, um die Anzahl der vom Cross-Join zurückgegebenen Zeilen zu beschränken. Hier verwenden wir die WHERE-Klausel zusammen mit dem Cross Join.

-- SQL Server Cross Join ExampleSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp, AS DeptWHERE Dept. = 'Software Developer'
SQL CROSS JOIN 2

Cross Join Order By Clause Example

Der Cross-Join erlaubt es uns, die Reihenfolge der Datensätze mit der Order By Clause neu zu ordnen.

-- SQL Server Cross Join ExampleSELECT Emp. AS ,Emp. AS ,Dept. AS FROM AS Emp, AS DeptWHERE Dept. = 'Software Developer'
SQL CROSS JOIN 7

Schreibe einen Kommentar

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