logo

MySQL CROSS JOIN

MySQL CROSS JOIN koristi se za kombiniranje svih mogućnosti dviju ili više tablica i vraća rezultat koji sadrži svaki red iz svih doprinosećih tablica. CROSS JOIN je također poznat kao CARTESIAN JOIN, koji daje kartezijanski umnožak svih povezanih tablica. Kartezijanski umnožak može se objasniti kao svi retci prisutni u prvoj tablici pomnoženi sa svim retcima prisutnim u drugoj tablici. Slično je unutarnjem spajanju, gdje uvjet spajanja nije dostupan s ovom klauzulom.

Možemo to razumjeti pomoću sljedećeg vizualnog prikaza gdje CROSS JOIN vraća sve zapise iz tablice1 i tablice2, a svaki red je kombinacija redaka obje tablice.

MySQL CROSS JOIN

MySQL CROSS JOIN Sintaksa

Ključna riječ CROSS JOIN uvijek se koristi s naredbom SELECT i mora se napisati nakon klauzule FROM. Sljedeća sintaksa dohvaća sve zapise iz obje spojene tablice:

preimenovati imenik linux
 SELECT column-lists FROM table1 CROSS JOIN table2; 

U gornjoj sintaksi, popisi stupaca naziv je stupca ili polja koje želite vratiti, a tablica1 i tablica2 naziv je tablice iz koje dohvaćate zapise.

Primjer MySQL CROSS JOIN

Uzmimo neke primjere da bismo razumjeli rad klauzule lijevog spajanja ili lijevog vanjskog spajanja:

CROSS JOIN klauzula za spajanje dviju tablica

Ovdje ćemo napraviti dvije tablice 'kupci' i 'kontakti' koji sadrži sljedeće podatke:

Tablica: kupci

MySQL CROSS JOIN

Tablica: kontakti

preimenuj mapu linux
MySQL CROSS JOIN

Da biste dohvatili sve zapise iz obje tablice, izvršite sljedeći upit:

 SELECT * FROM customers CROSS JOIN contacts; 

Nakon uspješnog izvršenja upita, dati će sljedeći izlaz:

MySQL CROSS JOIN

Kada se izvrši naredba CROSS JOIN, primijetit ćete da prikazuje 42 retka. To znači da se sedam redaka iz tablice kupaca množi sa šest redaka iz tablice kontakata.

NAPOMENA: Kako biste izbjegli rezultat ponavljanja stupaca dva puta, preporučuje se korištenje naziva pojedinačnih stupaca umjesto naredbe SELECT *.

Problem dvosmislenih stupaca u MySQL CROSS JOIN

Ponekad moramo dohvatiti odabrane zapise stupaca iz više tablica. Ove tablice mogu sadržavati neke slične nazive stupaca. U tom slučaju MySQL naredba CROSS JOIN daje pogrešku: ime stupca je dvosmisleno. To znači da je naziv stupca prisutan u obje tablice, a MySQL se zbunjuje oko toga koji stupac želite prikazati. Sljedeći primjeri to jasnije objašnjavaju:

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

Gornji CROSS JOIN izbacuje pogrešku kao što je prikazano na slici ispod:

MySQL CROSS JOIN

Ovaj se problem može riješiti korištenjem naziva tablice prije naziva stupca. Gore navedeni upit može se prepisati kao:

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

Nakon izvršenja gornjeg upita, dobit ćemo sljedeći izlaz:

niz u jsonobject
MySQL CROSS JOIN

LEFT JOIN s WHERE klauzulom

WHERE klauzula se koristi za vraćanje filtar rezultat iz tablice. Sljedeći primjer to ilustrira s klauzulom 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&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;>

Nakon uspješnog izvršavanja gornjeg upita, dati će sljedeći izlaz:

MySQL CROSS JOIN