24th Nov 2022 5 Leseminuten Eine illustrierte Anleitung zum SQL CROSS JOIN Dorota Wdzięczna JOIN Inhaltsverzeichnis Was ist ein JOIN? Was ist ein CROSS JOIN? Andere Möglichkeiten, kartesische Produkte zu erhalten CROSS JOIN in der Multiplikation verwenden Verwendung von CROSS JOIN mit vielen Tabellen Mehr erfahren 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: 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. Tags: JOIN