logo

MySQL CROSS-JOIN

MySQL CROSS JOIN wordt gebruikt om alle mogelijkheden van de twee of meer tabellen te combineren en retourneert het resultaat dat elke rij uit alle bijdragende tabellen bevat. De CROSS JOIN wordt ook wel CARTESIAN JOIN genoemd en biedt het cartesiaanse product van alle gekoppelde tabellen. Het Cartesiaanse product kan worden verklaard als alle rijen in de eerste tabel, vermenigvuldigd met alle rijen in de tweede tabel. Het is vergelijkbaar met de Inner Join, waarbij de join-voorwaarde niet beschikbaar is met deze clausule.

typoscript voor elk

We kunnen het begrijpen met de volgende visuele weergave waarbij CROSS JOIN alle records uit tabel1 en tabel2 retourneert, en elke rij de combinatie is van rijen van beide tabellen.

MySQL CROSS-JOIN

MySQL CROSS JOIN-syntaxis

Het sleutelwoord CROSS JOIN wordt altijd gebruikt met de SELECT-instructie en moet na de FROM-clausule worden geschreven. Met de volgende syntaxis worden alle records uit beide samengevoegde tabellen opgehaald:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

In de bovenstaande syntaxis zijn de kolomlijsten de naam van de kolom of het veld dat u wilt retourneren en zijn tabel1 en tabel2 de tabelnaam waaruit u de records ophaalt.

MySQL CROSS JOIN-voorbeeld

Laten we enkele voorbeelden nemen om de werking van de Left Join- of Left Outer Join-clausule te begrijpen:

CROSS JOIN-clausule voor het samenvoegen van twee tabellen

Hier gaan we twee tabellen maken 'klanten' En 'contacten' die de volgende gegevens bevat:

Tabel: klanten

MySQL CROSS-JOIN

Tabel: contacten

MySQL CROSS-JOIN

Om alle records uit beide tabellen op te halen, voert u de volgende query uit:

 SELECT * FROM customers CROSS JOIN contacts; 

Na succesvolle uitvoering van de query geeft deze de volgende uitvoer:

MySQL CROSS-JOIN

Wanneer de CROSS JOIN-instructie wordt uitgevoerd, zult u zien dat deze 42 rijen weergeeft. Het betekent dat zeven rijen uit de klantentabel worden vermenigvuldigd met de zes rijen uit de contactentabel.

OPMERKING: Om het resultaat van tweemaal herhaalde kolommen te voorkomen, wordt aanbevolen om individuele kolomnamen te gebruiken in plaats van de SELECT *-instructie.

Dubbelzinnig kolommenprobleem in MySQL CROSS JOIN

Soms moeten we de geselecteerde kolomrecords uit meerdere tabellen ophalen. Deze tabellen kunnen enkele soortgelijke kolomnamen bevatten. In dat geval genereert de MySQL CROSS JOIN-instructie een fout: de kolomnaam is dubbelzinnig. Het betekent dat de naam van de kolom in beide tabellen aanwezig is, en MySQL raakt in de war over welke kolom u wilt weergeven. De volgende voorbeelden leggen het duidelijker uit:

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

De bovenstaande CROSS JOIN genereert een fout zoals weergegeven in de onderstaande afbeelding:

MySQL CROSS-JOIN

Dit probleem kan worden opgelost door de tabelnaam vóór de kolomnaam te gebruiken. De bovenstaande query kan worden herschreven als:

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

Na het uitvoeren van de bovenstaande query krijgen we de volgende uitvoer:

MySQL CROSS-JOIN

LINKS JOIN met WHERE-clausule

De WHERE-clausule wordt gebruikt om het filter resultaat uit de tabel. Het volgende voorbeeld illustreert dit met de CROSS JOIN-clausule:

tekenreeks omzetten in int
 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;>

Na succesvolle uitvoering van de bovenstaande query zal het de volgende uitvoer opleveren:

MySQL CROSS-JOIN