logo

CROSS PRIPOJTE SA k MySQL

MySQL CROSS JOIN sa používa na spojenie všetkých možností dvoch alebo viacerých tabuliek a vráti výsledok, ktorý obsahuje každý riadok zo všetkých prispievajúcich tabuliek. CROSS JOIN je tiež známy ako CARTESIAN JOIN, ktorý poskytuje karteziánsky súčin všetkých pridružených tabuliek. Kartézsky súčin možno vysvetliť ako všetky riadky v prvej tabuľke vynásobené všetkými riadkami v druhej tabuľke. Je to podobné ako vnútorné spojenie, kde podmienka spojenia nie je s touto klauzulou dostupná.

java string cmp

Môžeme to pochopiť pomocou nasledujúcej vizuálnej reprezentácie, kde CROSS JOIN vráti všetky záznamy z tabuľky 1 a tabuľky 2 a každý riadok je kombináciou riadkov oboch tabuliek.

CROSS PRIPOJTE SA k MySQL

Syntax CROSS JOIN MySQL

Kľúčové slovo CROSS JOIN sa vždy používa s príkazom SELECT a musí byť napísané za klauzulou FROM. Nasledujúca syntax načíta všetky záznamy z oboch spojovacích tabuliek:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

Vo vyššie uvedenej syntaxi sú zoznamy stĺpcov názov stĺpca alebo poľa, ktoré chcete vrátiť, a tabuľka1 a tabuľka2 sú názov tabuľky, z ktorej získavate záznamy.

Príklad CROSS JOIN MySQL

Uveďme si niekoľko príkladov, aby sme pochopili fungovanie klauzuly Left Join alebo Left Outer Join:

Klauzula CROSS JOIN na spojenie dvoch tabuliek

Tu vytvoríme dve tabuľky 'zákazníci' a 'kontakty' ktorý obsahuje nasledujúce údaje:

Tabuľka: zákazníci

CROSS PRIPOJTE SA k MySQL

Tabuľka: kontakty

diana mary blacker
CROSS PRIPOJTE SA k MySQL

Ak chcete získať všetky záznamy z oboch tabuliek, vykonajte nasledujúci dotaz:

 SELECT * FROM customers CROSS JOIN contacts; 

Po úspešnom vykonaní dotazu poskytne nasledujúci výstup:

CROSS PRIPOJTE SA k MySQL

Keď sa vykoná príkaz CROSS JOIN, uvidíte, že zobrazuje 42 riadkov. To znamená, že sedem riadkov z tabuľky zákazníkov sa vynásobí šiestimi riadkami z tabuľky kontaktov.

POZNÁMKA: Aby ste sa vyhli tomu, že sa stĺpce opakujú dvakrát, odporúča sa použiť názvy jednotlivých stĺpcov namiesto príkazu SELECT *.

Problém nejednoznačných stĺpcov v MySQL CROSS JOIN

Niekedy potrebujeme načítať vybrané záznamy stĺpcov z viacerých tabuliek. Tieto tabuľky môžu obsahovať niektoré názvy stĺpcov podobné. V takom prípade príkaz MySQL CROSS JOIN vyvolá chybu: názov stĺpca je nejednoznačný. Znamená to, že názov stĺpca je prítomný v oboch tabuľkách a MySQL je zmätený, ktorý stĺpec chcete zobraziť. Nasledujúce príklady to vysvetľujú jasnejšie:

abs c kód
 SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders; 

Vyššie uvedené CROSS JOIN vyvolá chybu, ako je uvedené na obrázku nižšie:

CROSS PRIPOJTE SA k MySQL

Tento problém možno vyriešiť použitím názvu tabuľky pred názvom stĺpca. Vyššie uvedený dotaz je možné prepísať takto:

dátumový reťazec java
 SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders; 

Po vykonaní vyššie uvedeného dotazu dostaneme nasledujúci výstup:

CROSS PRIPOJTE SA k MySQL

LEFT JOIN with WHERE Clause

Klauzula WHERE sa používa na vrátenie filter výsledok z tabuľky. Nasledujúci príklad to ilustruje s klauzulou 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;>

Po úspešnom vykonaní vyššie uvedeného dotazu poskytne nasledujúci výstup:

CROSS PRIPOJTE SA k MySQL