MySQL CROSS JOIN se uporablja za združevanje vseh možnosti dveh ali več tabel in vrne rezultat, ki vsebuje vsako vrstico iz vseh prispevajočih tabel. CROSS JOIN je znan tudi kot CARTESIAN JOIN, ki zagotavlja kartezični produkt vseh povezanih tabel. Kartezični produkt je mogoče razložiti tako, da se vse vrstice v prvi tabeli pomnožijo z vsemi vrsticami v drugi tabeli. Podobno je notranjemu združevanju, kjer pogoj združevanja ni na voljo s tem členom.
To lahko razumemo z naslednjo vizualno predstavitvijo, kjer CROSS JOIN vrne vse zapise iz table1 in table2, vsaka vrstica pa je kombinacija vrstic obeh tabel.
Sintaksa MySQL CROSS JOIN
Ključna beseda CROSS JOIN se vedno uporablja s stavkom SELECT in mora biti zapisana za klavzulo FROM. Naslednja sintaksa pridobi vse zapise iz obeh povezovalnih tabel:
java združi nize
SELECT column-lists FROM table1 CROSS JOIN table2;
V zgornji sintaksi je stolpec-seznam ime stolpca ali polja, ki ga želite vrniti, tabela1 in tabela2 pa ime tabele, iz katere pridobite zapise.
Primer MySQL CROSS JOIN
Vzemimo nekaj primerov za razumevanje delovanja klavzule Left Join ali Left Outer Join:
Klavzula CROSS JOIN za združevanje dveh tabel
Tukaj bomo ustvarili dve tabeli 'stranke' in 'stiki' ki vsebuje naslednje podatke:
Tabela: stranke
Tabela: kontakti
dolgo do niza java
Če želite pridobiti vse zapise iz obeh tabel, izvedite naslednjo poizvedbo:
SELECT * FROM customers CROSS JOIN contacts;
Po uspešni izvedbi poizvedbe bo dal naslednje rezultate:
Ko se izvede stavek CROSS JOIN, boste opazili, da prikaže 42 vrstic. To pomeni, da se sedem vrstic iz tabele strank pomnoži s šestimi vrsticami iz tabele s stiki.
OPOMBA: Če se želite izogniti rezultatu dvakratnega ponavljanja stolpcev, je priporočljivo, da uporabite imena posameznih stolpcev namesto stavka SELECT *.
Težava z dvoumnimi stolpci v MySQL CROSS JOIN
Včasih moramo pridobiti izbrane zapise stolpcev iz več tabel. Te tabele lahko vsebujejo nekaj podobnih imen stolpcev. V tem primeru stavek MySQL CROSS JOIN vrže napako: ime stolpca je dvoumno. To pomeni, da je ime stolpca prisotno v obeh tabelah in MySQL se zmede glede tega, kateri stolpec želite prikazati. Naslednji primeri to bolj jasno pojasnijo:
SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders;
Zgornji CROSS JOIN vrže napako, kot je prikazano na spodnji sliki:
To težavo je mogoče rešiti z uporabo imena tabele pred imenom stolpca. Zgornjo poizvedbo lahko prepišemo kot:
SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders;
Po izvedbi zgornje poizvedbe bomo dobili naslednji rezultat:
spustni meni javascript
LEFT JOIN s klavzulo WHERE
Klavzula WHERE se uporablja za vrnitev filter rezultat iz tabele. Naslednji primer to ponazarja s klavzulo CROSS JOIN:
SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price>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 ' <strong>customers'</strong> and ' <strong>orders'</strong> . Let us create one more table and name it as ' <strong>contacts' 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;>
Po uspešni izvedbi zgornje poizvedbe bo dal naslednje rezultate:
5000;>