logo

„MySQL CROSS JOIN“.

„MySQL CROSS JOIN“ naudojamas sujungti visas dviejų ar daugiau lentelių galimybes ir pateikia rezultatą, kuriame yra kiekviena eilutė iš visų prisidedančių lentelių. CROSS JOIN taip pat žinomas kaip CARTESIAN JOIN, kuris pateikia visų susijusių lentelių stačiakampį sandaugą. Dekarto sandaugą galima paaiškinti taip, kad visos pirmoje lentelėje esančios eilutės padaugintos iš visų antrosios lentelės eilučių. Jis panašus į vidinį sujungimą, kur sujungimo sąlyga nepasiekiama naudojant šią sąlygą.

Mes galime tai suprasti naudodami šį vaizdinį vaizdą, kuriame CROSS JOIN pateikia visus įrašus iš lentelės1 ir lentelės2, o kiekviena eilutė yra abiejų lentelių eilučių derinys.

„MySQL CROSS JOIN“.

„MySQL CROSS JOIN“ sintaksė

CROSS JOIN raktinis žodis visada naudojamas su SELECT sakiniu ir turi būti parašytas po FROM sakinio. Ši sintaksė paima visus įrašus iš abiejų sujungimo lentelių:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

Aukščiau pateiktoje sintaksėje stulpelių sąrašai yra stulpelio arba lauko, kurį norite grąžinti, pavadinimas, o lentelė1 ir lentelė2 yra lentelės, iš kurios gaunami įrašai, pavadinimas.

MySQL CROSS JOIN pavyzdys

Paimkime keletą pavyzdžių, kad suprastume, kaip veikia kairiojo sujungimo arba kairiojo išorinio sujungimo sąlygos:

CROSS JOIN sąlyga, skirta dviejų lentelių sujungimui

Čia mes sukursime dvi lenteles 'klientai' ir 'kontaktai' kuriame yra šie duomenys:

Lentelė: klientai

sujungimo rūšiavimo algoritmas
„MySQL CROSS JOIN“.

Lentelė: kontaktai

„MySQL CROSS JOIN“.

Norėdami gauti visus įrašus iš abiejų lentelių, vykdykite šią užklausą:

 SELECT * FROM customers CROSS JOIN contacts; 

Sėkmingai įvykdžius užklausą, ji duos tokią išvestį:

„MySQL CROSS JOIN“.

Kai vykdomas CROSS JOIN sakinys, pastebėsite, kad jame rodomos 42 eilutės. Tai reiškia, kad septynios klientų lentelės eilutės padaugintos iš šešių eilučių iš kontaktų lentelės.

PASTABA: Norint išvengti stulpelių kartojimo du kartus, rekomenduojama naudoti atskirų stulpelių pavadinimus, o ne SELECT * sakinį.

Dviprasmiškų stulpelių problema „MySQL CROSS JOIN“.

Kartais turime gauti pasirinktų stulpelių įrašus iš kelių lentelių. Šiose lentelėse gali būti kai kurių panašių stulpelių pavadinimų. Tokiu atveju MySQL CROSS JOIN sakinys pateikia klaidą: stulpelio pavadinimas yra dviprasmiškas. Tai reiškia, kad stulpelio pavadinimas yra abiejose lentelėse, o MySQL susipainioja, kurį stulpelį norite rodyti. Toliau pateikti pavyzdžiai tai paaiškina aiškiau:

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

Aukščiau pateiktas CROSS JOIN rodo klaidą, kaip parodyta toliau pateiktame paveikslėlyje:

„MySQL CROSS JOIN“.

Šią problemą galima išspręsti naudojant lentelės pavadinimą prieš stulpelio pavadinimą. Aukščiau pateiktą užklausą galima perrašyti taip:

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

Įvykdę aukščiau pateiktą užklausą, gausime tokią išvestį:

„MySQL CROSS JOIN“.

LEFT JOIN su WHERE sąlyga

WHERE sąlyga naudojama norint grąžinti filtras rezultatas iš lentelės. Šis pavyzdys iliustruoja tai su CROSS JOIN sąlyga:

kaip rodyti programos slėpimą „Android“.
 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;>

Sėkmingai įvykdžius aukščiau pateiktą užklausą, ji duos tokią išvestį:

„MySQL CROSS JOIN“.