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 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
Tablica: kontakti
preimenuj mapu linux
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:
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:
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
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>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;>
Nakon uspješnog izvršavanja gornjeg upita, dati će sljedeći izlaz:
5000;>