Zurück zur Artikelliste Artikel
5 Leseminuten

Eine illustrierte Anleitung zum SQL CROSS JOIN

Was ist eine SQL CROSS JOIN-Anweisung? Wann sollten Sie sie verwenden? Wann sollten Sie sie nicht verwenden? In diesem Beitrag erfahren Sie, was Sie über CROSS JOIN wissen müssen.

Sie wissen bereits, dass Sie die SQL-Anweisung JOIN verwenden können, um eine oder mehrere Tabellen zu verbinden, die einen übereinstimmenden Datensatz enthalten. Und wenn Sie den Beitrag LearnSQL's Learning SQL-JOINs Using Real Life Situations gelesen haben, dann wissen Sie, dass es viele Arten von JOINs gibt.

Es gibt eine JOIN, die wir nicht so oft verwenden, die aber einen ganz bestimmten Zweck erfüllt: CROSS JOIN. In diesem Artikel erkläre ich, was ein CROSS JOIN ist und wie er funktioniert. Ich erkläre auch, wann Sie einen solchen verwenden sollten und wann nicht.

Was ist ein JOIN?

Zunächst sollten wir uns ansehen, was ein JOIN in SQL bewirkt: Es ermöglicht Ihnen, Daten (d. h. Datensätze) aus mehreren Tabellen zu kombinieren. JOIN Operatoren ermöglichen es Ihnen, Datensätze auf bestimmte Weise zu verknüpfen, z. B. nur Datensätze, die in beiden Tabellen eine Übereinstimmung aufweisen.

Wenn wir mit CROSS JOIN beginnen, werden wir zunächst mit zwei Tabellen arbeiten, "color" und "tshirt".

Die Tabelle "color", in der die Namen der verfügbaren T-Shirt-Farben gespeichert sind, sieht wie folgt aus:

id name
1 yellow
2 green
3 pink

Die Tabelle "tshirt", in der die Größen der verschiedenen T-Shirts gespeichert sind, sieht so aus:

id size
1 S
2 M
3 L
4 XL

Menschen tragen T-Shirts in allen Kombinationen von Größen und Farben. Wir werden also Daten aus diesen Tabellen verknüpfen.

Was ist ein CROSS JOIN?

CROSS JOIN gibt ein kartesisches Produkt zurück, d. h. alle Datensätze, die mit allen Datensätzen in allen Tabellen verknüpft sind. Es gibt keine JOIN Bedingung (d. h. keine ON-Klausel). Die resultierende Anzahl der Datensätze ist gleich der Anzahl der Zeilen in der ersten Tabelle multipliziert mit der Anzahl der Zeilen der zweiten Tabelle. CROSS JOIN wird sehr selten verwendet. Da sie alle möglichen Kombinationen von Datensätzen aus allen Tabellen erzeugt, kann sie bei Tabellen, die viele Datensätze enthalten, eine gefährliche Operation sein.

Wir haben unsere zwei Tabellen, wie unten gezeigt. Lassen Sie uns eine CROSS JOIN auf sie anwenden und sehen, was passiert:

tshirt
id size
1 S
2 M
3 L
4 XL
color
id name
1 yellow
2 green
3 pink

SELECT *  FROM  tshirt
CROSS JOIN  color;

Beachten Sie, dass eine Tabelle nach der FROM -Klausel aufgeführt ist; der andere Tabellenname folgt CROSS JOIN. Es spielt keine Rolle, welche Tabelle nach der from-Klausel und welche nach der CROSS JOIN-Klausel aufgeführt ist. Das Ergebnis ist dasselbe: alle möglichen Kombinationen von Datensätzen aus allen Tabellen.

Hier ist das Ergebnis dieser Operation:

id size id name
1 S 1 yellow
2 M 1 yellow
3 L 1 yellow
4 XL 1 yellow
1 S 2 green
2 M 2 green
3 L 2 green
4 XL 2 green
1 S 3 pink
2 M 3 pink
3 L 3 pink
4 XL 3 pink

Wir haben alle Datensätze aus der Tabelle "tshirt" und verknüpfen jeden Datensatz mit allen Datensätzen der Tabelle "color" Tabelle. Mit anderen Worten, wir haben die Kombination jedes T-Shirts in jeder Größe mit jeder Farbe. Die folgende Grafik erklärt dies visuell:

CROSS JOIN

Andere Möglichkeiten, kartesische Produkte zu erhalten

Es gibt noch eine andere Möglichkeit, eine Abfrage dazu zu bringen, ein kartesisches Produkt zu liefern, ohne CROSS JOIN zu verwenden:

SELECT *  FROM  tshirt, color ;

In diesem Fall müssen die Tabellen, die Sie verknüpfen möchten, nach der FROM Klausel aufgeführt werden. Beachten Sie, dass Sie durch die Verwendung des * alle Datensätze aus beiden Tabellen auswählen. Die Ergebnismenge ist dieselbe wie im obigen Beispiel CROSS JOIN.

CROSS JOIN in der Multiplikation verwenden

Wir können auch CROSS JOIN verwenden, um zu multiplizieren. Lassen Sie uns anhand von zwei Tabellen, die einige einfache Zahlen speichern, sehen, wie das funktioniert. Schauen wir uns zunächst die Tabellen an:

"t1"

n
11
12
13

"t2"

n
11
12
13

Beide Tabellen speichern die gleichen Zahlen: 11, 12, 13. Unser Ziel ist es, diese Zahlen mit sich selbst zu multiplizieren und so eine Art Multiplikationstabelle zu erstellen. Dazu können wir CROSS JOIN verwenden. Sehen Sie sich die folgende Abfrage an:

SELECT t1.n, t2.n, t1.n*t2.n AS result  FROM  t1
CROSS JOIN  t2 ;

Die SELECT listet drei Spalten auf: Zahlen aus der ersten Tabelle (t1.n), Zahlen aus der zweiten Tabelle (t2.n), und die Multiplikation, die in der Ergebnisspalte (t1.n*t2.n AS result) gespeichert ist. Die folgende Tabelle zeigt das Ergebnis:

t1.n t2.n result
11 11 121
11 12 132
11 13 143
12 11 132
12 12 144
12 13 156
13 11 143
13 12 156
13 13 169

Verwendung von CROSS JOIN mit vielen Tabellen

Wir können mehr als zwei Tabellen in einer CROSS JOIN verwenden. Stellen Sie sich vor, dass ein Unternehmen T-Shirts in drei Größen (S, M, L) und in zwei Stoffen (Baumwolle und Leinen) herstellt. Jedes T-Shirt ist in zwei Farben erhältlich: rosa oder blau. Schauen Sie sich die folgenden Tabellen an:

"Farbe"

id name
1 blue
3 pink

"tshirt"

id size
1 S
2 M
3 L

"Stoff"

id name
1 cotton
2 linen

Nehmen wir nun an, Sie möchten alle möglichen T-Shirts sehen: jede Kombination von Größe, Farbe und Stoff. Die folgende Abfrage ruft diese Informationen mit Hilfe von CROSS JOIN über drei Tabellen ab:

SELECT tshirt.size as size, color.name AS color, fabric.name as fabric
FROM  tshirt 
CROSS JOIN  fabric
CROSS JOIN  color ;

Hier ist das Ergebnis:

size color fabric
S blue cotton
M blue cotton
L blue cotton
S pink cotton
M pink cotton
L pink cotton
S blue linen
M blue linen
L blue linen
S pink linen
M pink linen
L pink linen

Es gibt zwölf mögliche T-Shirts. Die zwei Farben multipliziert mit drei Größen und wieder mit zwei Stoffen ergeben eine 12.

Mehr erfahren

Es gibt noch mehr zu wissen über die Verwendung von CROSS JOIN als das, was wir in dieser illustrierten Einführung behandelt haben. Wenn Sie mehr über JOINerfahren möchten, besuchen Sie den Kurs SQL für Anfänger von LearnSQL.