logo

MySQL CROSS JOIN

MySQL CROSS JOIN izmanto, lai apvienotu visas divu vai vairāku tabulu iespējas, un atgriež rezultātu, kurā ir katra rinda no visām iesaistītajām tabulām. CROSS JOIN ir pazīstams arī kā KARTĒZIJAS SAVIENOJUMS, kas nodrošina visu saistīto tabulu Dekarta reizinājumu. Dekarta reizinājumu var izskaidrot, visas pirmajā tabulā esošās rindas reizinot ar visām otrajā tabulā esošajām rindām. Tas ir līdzīgs iekšējam savienojumam, kur savienojuma nosacījums nav pieejams ar šo klauzulu.

Mēs to varam saprast ar šādu vizuālo attēlojumu, kur CROSS JOIN atgriež visus ierakstus no tabulas1 un tabulas2, un katra rinda ir abu tabulu rindu kombinācija.

MySQL CROSS JOIN

MySQL CROSS JOIN sintakse

Atslēgvārds CROSS JOIN vienmēr tiek izmantots kopā ar priekšrakstu SELECT, un tas ir jāraksta aiz klauzulas FROM. Tālāk norādītā sintakse ienes visus ierakstus no abām savienojošām tabulām:

Kat timpf
 SELECT column-lists FROM table1 CROSS JOIN table2; 

Iepriekš minētajā sintaksē kolonnu saraksti ir tās kolonnas vai lauka nosaukums, kuru vēlaties atgriezt, un tabula1 un tabula2 ir tabulas nosaukums, no kuras ienesat ierakstus.

MySQL CROSS JOIN piemērs

Ņemsim dažus piemērus, lai izprastu kreisā savienojuma vai kreisā ārējā savienojuma klauzulas darbību:

CROSS JOIN klauzula divu tabulu savienošanai

Šeit mēs izveidosim divas tabulas 'klienti' un 'kontakti' kas satur šādus datus:

Tabula: klienti

MySQL CROSS JOIN

Tabula: kontakti

abstraktas metodes
MySQL CROSS JOIN

Lai iegūtu visus ierakstus no abām tabulām, izpildiet šādu vaicājumu:

 SELECT * FROM customers CROSS JOIN contacts; 

Pēc veiksmīgas vaicājuma izpildes tas sniegs šādu izvadi:

MySQL CROSS JOIN

Kad CROSS JOIN priekšraksts tiks izpildīts, jūs ievērosiet, ka tas parāda 42 rindas. Tas nozīmē, ka septiņas rindas no klientu tabulas tiek reizinātas ar sešām rindām no kontaktpersonu tabulas.

PIEZĪME. Lai izvairītos no divreiz atkārtotu kolonnu rezultāta, priekšraksta SELECT * vietā ieteicams izmantot atsevišķus kolonnu nosaukumus.

Neviennozīmīgu kolonnu problēma pakalpojumā MySQL CROSS JOIN

Dažreiz mums ir jāiegūst atlasīto kolonnu ieraksti no vairākām tabulām. Šajās tabulās var būt daži līdzīgi kolonnu nosaukumi. Tādā gadījumā MySQL CROSS JOIN paziņojums rada kļūdu: kolonnas nosaukums ir neskaidrs. Tas nozīmē, ka kolonnas nosaukums ir abās tabulās, un MySQL neizprot, kuru kolonnu vēlaties parādīt. Tālāk sniegtie piemēri to izskaidro skaidrāk.

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

Iepriekš minētais CROSS JOIN rada kļūdu, kā parādīts zemāk esošajā attēlā:

MySQL CROSS JOIN

Šo problēmu var atrisināt, izmantojot tabulas nosaukumu pirms kolonnas nosaukuma. Iepriekš minēto vaicājumu var pārrakstīt šādi:

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

Pēc iepriekš minētā vaicājuma izpildes mēs saņemsim šādu izvadi:

konvertēt virkni uz jsonobject java
MySQL CROSS JOIN

LEFT JOIN ar WHERE klauzulu

WHERE klauzula tiek izmantota, lai atgrieztu filtru rezultāts no tabulas. Šis piemērs ilustrē to ar CROSS JOIN klauzulu:

 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;>

Pēc veiksmīgas iepriekš minētā vaicājuma izpildes tas sniegs šādu izvadi:

MySQL CROSS JOIN