logo

MySQL CROSS JOIN

MySQL CROSS JOIN wird verwendet, um alle Möglichkeiten der zwei oder mehr Tabellen zu kombinieren und das Ergebnis zurückzugeben, das jede Zeile aller beitragenden Tabellen enthält. Der CROSS JOIN wird auch als CARTESIAN JOIN bezeichnet und liefert das kartesische Produkt aller zugehörigen Tabellen. Das kartesische Produkt kann als alle in der ersten Tabelle vorhandenen Zeilen multipliziert mit allen in der zweiten Tabelle vorhandenen Zeilen erklärt werden. Es ähnelt dem Inner Join, bei dem die Join-Bedingung mit dieser Klausel nicht verfügbar ist.

Wir können es anhand der folgenden visuellen Darstellung verstehen, in der CROSS JOIN alle Datensätze aus Tabelle1 und Tabelle2 zurückgibt und jede Zeile die Kombination der Zeilen beider Tabellen ist.

MySQL CROSS JOIN

MySQL CROSS JOIN-Syntax

Das Schlüsselwort CROSS JOIN wird immer mit der SELECT-Anweisung verwendet und muss nach der FROM-Klausel geschrieben werden. Die folgende Syntax ruft alle Datensätze aus beiden Verknüpfungstabellen ab:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

In der obigen Syntax ist „column-lists“ der Name der Spalte oder des Felds, die Sie zurückgeben möchten, und „table1“ und „table2“ sind die Tabellennamen, aus denen Sie die Datensätze abrufen.

MySQL CROSS JOIN-Beispiel

Nehmen wir einige Beispiele, um die Funktionsweise der Left Join- oder Left Outer Join-Klausel zu verstehen:

CROSS JOIN-Klausel zum Verbinden zweier Tabellen

Hier erstellen wir zwei Tabellen 'Kunden' Und 'Kontakte' das folgende Daten enthält:

Tabelle: Kunden

MySQL CROSS JOIN

Tabelle: Kontakte

MySQL CROSS JOIN

Um alle Datensätze aus beiden Tabellen abzurufen, führen Sie die folgende Abfrage aus:

 SELECT * FROM customers CROSS JOIN contacts; 

Nach erfolgreicher Ausführung der Abfrage wird folgende Ausgabe ausgegeben:

MySQL CROSS JOIN

Wenn die CROSS JOIN-Anweisung ausgeführt wird, werden Sie feststellen, dass sie 42 Zeilen anzeigt. Das bedeutet, dass sieben Zeilen aus der Kundentabelle mit den sechs Zeilen aus der Kontakttabelle multipliziert werden.

HINWEIS: Um das Ergebnis doppelt wiederholter Spalten zu vermeiden, wird empfohlen, anstelle der SELECT *-Anweisung einzelne Spaltennamen zu verwenden.

Problem mit mehrdeutigen Spalten in MySQL CROSS JOIN

Manchmal müssen wir die ausgewählten Spaltendatensätze aus mehreren Tabellen abrufen. Diese Tabellen können einige ähnliche Spaltennamen enthalten. In diesem Fall gibt die MySQL CROSS JOIN-Anweisung einen Fehler aus: Der Spaltenname ist nicht eindeutig. Das bedeutet, dass der Name der Spalte in beiden Tabellen vorhanden ist und MySQL nicht weiß, welche Spalte Sie anzeigen möchten. Die folgenden Beispiele verdeutlichen es noch deutlicher:

 SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders; 

Der obige CROSS JOIN löst einen Fehler aus, wie im Bild unten dargestellt:

MySQL CROSS JOIN

Dieses Problem kann gelöst werden, indem der Tabellenname vor dem Spaltennamen verwendet wird. Die obige Abfrage kann wie folgt umgeschrieben werden:

Instanz von in Java
 SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders; 

Nachdem wir die obige Abfrage ausgeführt haben, erhalten wir die folgende Ausgabe:

MySQL CROSS JOIN

LEFT JOIN mit WHERE-Klausel

Die WHERE-Klausel wird verwendet, um die zurückzugeben Filter Ergebnis aus der Tabelle. Das folgende Beispiel veranschaulicht dies anhand der CROSS JOIN-Klausel:

 SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price&gt;1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named &apos; <strong>customers&apos;</strong> and &apos; <strong>orders&apos;</strong> . Let us create one more table and name it as &apos; <strong>contacts&apos; that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>

Nach erfolgreicher Ausführung der obigen Abfrage wird die folgende Ausgabe ausgegeben:

MySQL CROSS JOIN