MySQL CROSS JOINia käytetään yhdistämään kahden tai useamman taulukon kaikki mahdollisuudet ja palauttaa tuloksen, joka sisältää jokaisen rivin kaikista osallistuvista taulukoista. CROSS JOIN tunnetaan myös nimellä CARTESIAN JOIN, joka tarjoaa kaikkien siihen liittyvien taulukoiden suorakulmaisen tuotteen. Karteesinen tulo voidaan selittää siten, että kaikki ensimmäisessä taulukossa olevat rivit kerrotaan kaikilla toisen taulukon riveillä. Se on samanlainen kuin Inner Join, jossa liitosehto ei ole käytettävissä tällä lausekkeella.
Voimme ymmärtää sen seuraavalla visuaalisella esityksellä, jossa CROSS JOIN palauttaa kaikki taulukon 1 ja taulukon 2 tietueet, ja jokainen rivi on molempien taulukoiden rivien yhdistelmä.
MySQL CROSS JOIN -syntaksi
CROSS JOIN -avainsanaa käytetään aina SELECT-käskyn kanssa, ja se on kirjoitettava FROM-lauseen jälkeen. Seuraava syntaksi hakee kaikki tietueet molemmista liitostaulukoista:
java-merkkijonon muunnos kokonaisluvuiksi
SELECT column-lists FROM table1 CROSS JOIN table2;
Yllä olevassa syntaksissa sarakeluettelot ovat sen sarakkeen tai kentän nimi, jonka haluat palauttaa, ja taulukko1 ja taulukko2 ovat taulukon nimi, josta haet tietueet.
MySQL CROSS JOIN Esimerkki
Otetaan joitain esimerkkejä, jotta ymmärrämme vasemman liitoksen tai vasemman ulkoliitoksen toiminnan:
CROSS JOIN -lause kahden pöydän liittämiseksi
Tässä aiomme luoda kaksi taulukkoa 'Asiakkaat' ja 'yhteystiedot' joka sisältää seuraavat tiedot:
Taulukko: asiakkaat
Taulukko: yhteystiedot
heittää merkkijono int
Voit hakea kaikki tietueet molemmista taulukoista suorittamalla seuraavan kyselyn:
SELECT * FROM customers CROSS JOIN contacts;
Kun kysely on suoritettu onnistuneesti, se antaa seuraavan tuloksen:
Kun CROSS JOIN -lause suoritetaan, huomaat, että siinä on 42 riviä. Se tarkoittaa seitsemän riviä asiakkaiden taulukosta kerrottuna kuudella yhteystietotaulukon rivillä.
HUOMAA: Välttääksesi tuloksen toistuvista sarakkeista kahdesti, on suositeltavaa käyttää yksittäisiä sarakkeiden nimiä SELECT * -käskyn sijaan.
Moniselitteiset sarakkeet ongelma MySQL:ssä CROSS JOIN
Joskus meidän on noudettava valitut saraketietueet useista taulukoista. Nämä taulukot voivat sisältää joitain samankaltaisia sarakkeiden nimiä. Siinä tapauksessa MySQL CROSS JOIN -käsky antaa virheen: sarakkeen nimi on moniselitteinen. Se tarkoittaa, että sarakkeen nimi on molemmissa taulukoissa, ja MySQL hämmentää, minkä sarakkeen haluat näyttää. Seuraavat esimerkit selittävät sen selkeämmin:
SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders;
Yllä oleva CROSS JOIN aiheuttaa alla olevan kuvan mukaisen virheen:
Tämä ongelma voidaan ratkaista käyttämällä taulukon nimeä ennen sarakkeen nimeä. Yllä oleva kysely voidaan kirjoittaa uudelleen seuraavasti:
SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders;
Yllä olevan kyselyn suorittamisen jälkeen saamme seuraavan tuloksen:
c-koodi abs
LEFT JOIN WHERE-lauseen kanssa
WHERE-lausetta käytetään palauttamaan suodattaa tulos taulukosta. Seuraava esimerkki havainnollistaa tätä CROSS JOIN -lausekkeen kanssa:
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;>
Kun yllä oleva kysely on suoritettu onnistuneesti, se antaa seuraavan tuloksen:
5000;>