logo

MySQL CROSS BLI MED

MySQL CROSS JOIN brukes til å kombinere alle mulighetene til de to eller flere tabellene og returnerer resultatet som inneholder hver rad fra alle medvirkende tabeller. CROSS JOIN er også kjent som CARTESIAN JOIN, som gir det kartesiske produktet til alle tilhørende tabeller. Det kartesiske produktet kan forklares som alle radene i den første tabellen multiplisert med alle radene i den andre tabellen. Det ligner på Inner Join, der sammenføyningsbetingelsen ikke er tilgjengelig med denne klausulen.

Vi kan forstå det med følgende visuelle representasjon der CROSS JOIN returnerer alle postene fra tabell1 og tabell2, og hver rad er kombinasjonen av rader i begge tabellene.

MySQL CROSS BLI MED

MySQL CROSS JOIN Syntaks

Nøkkelordet CROSS JOIN brukes alltid med SELECT-setningen og må skrives etter FROM-leddet. Følgende syntaks henter alle poster fra begge sammenføyningstabellene:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

I syntaksen ovenfor er kolonnelistene navnet på kolonnen eller feltet du vil returnere, og tabell1 og tabell2 er tabellnavnet du henter postene fra.

MySQL CROSS JOIN Eksempel

La oss ta noen eksempler for å forstå hvordan Left Join eller Left Outer Join-klausulen fungerer:

CROSS JOIN klausul for sammenføyning av to tabeller

Her skal vi lage to tabeller 'kunder' og 'kontakter' som inneholder følgende data:

Tabell: kunder

MySQL CROSS BLI MED

Tabell: kontakter

MySQL CROSS BLI MED

For å hente alle poster fra begge tabellene, utfør følgende spørring:

 SELECT * FROM customers CROSS JOIN contacts; 

Etter vellykket utførelse av spørringen, vil den gi følgende utdata:

MySQL CROSS BLI MED

Når CROSS JOIN-setningen er utført, vil du se at den viser 42 rader. Det betyr at syv rader fra kundetabellen multipliseres med de seks radene fra kontakttabellen.

MERK: For å unngå resultatet av gjentatte kolonner to ganger, anbefales det å bruke individuelle kolonnenavn i stedet for SELECT *-setningen.

Problem med tvetydige kolonner i MySQL CROSS JOIN

Noen ganger må vi hente de valgte kolonnepostene fra flere tabeller. Disse tabellene kan inneholde noen lignende kolonnenavn. I så fall gir MySQL CROSS JOIN-setningen en feilmelding: kolonnenavnet er tvetydig. Det betyr at navnet på kolonnen er til stede i begge tabellene, og MySQL blir forvirret om hvilken kolonne du vil vise. Følgende eksempler forklarer det tydeligere:

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

Ovennevnte CROSS JOIN gir en feil som gitt i bildet nedenfor:

MySQL CROSS BLI MED

Dette problemet kan løses ved å bruke tabellnavnet før kolonnenavnet. Spørsmålet ovenfor kan skrives om som:

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

Etter å ha utført spørringen ovenfor, vil vi få følgende utdata:

MySQL CROSS BLI MED

VENSTRE BLI MED MED WHERE-klausulen

WHERE-klausulen brukes til å returnere filter resultat fra tabellen. Følgende eksempel illustrerer dette med CROSS JOIN-klausulen:

 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;>

Etter vellykket utførelse av spørringen ovenfor, vil den gi følgende utdata:

MySQL CROSS BLI MED