logo

MySQL CROSS JOIN

MySQL CROSS JOIN bruges til at kombinere alle muligheder for de to eller flere tabeller og returnerer resultatet, der indeholder hver række fra alle bidragende tabeller. CROSS JOIN er også kendt som CARTESIAN JOIN, som giver det kartesiske produkt af alle tilknyttede borde. Det kartesiske produkt kan forklares som alle rækker i den første tabel ganget med alle rækker i den anden tabel. Det svarer til Inner Join, hvor join-betingelsen ikke er tilgængelig med denne klausul.

Vi kan forstå det med følgende visuelle repræsentation, hvor CROSS JOIN returnerer alle posterne fra tabel1 og tabel2, og hver række er kombinationen af ​​rækker i begge tabeller.

MySQL CROSS JOIN

MySQL CROSS JOIN Syntaks

CROSS JOIN nøgleordet bruges altid sammen med SELECT-sætningen og skal skrives efter FROM-sætningen. Følgende syntaks henter alle poster fra begge sammenføjningstabeller:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

I ovenstående syntaks er kolonne-listerne navnet på den kolonne eller det felt, du vil returnere, og tabel1 og tabel2 er tabelnavnet, hvorfra du henter posterne.

MySQL CROSS JOIN Eksempel

Lad os tage nogle eksempler for at forstå, hvordan Left Join eller Left Outer Join-klausulen fungerer:

CROSS JOIN-klausul for sammenføjning af to tabeller

Her skal vi lave to tabeller 'kunder' og 'kontakter' der indeholder følgende data:

Tabel: kunder

MySQL CROSS JOIN

Tabel: kontakter

MySQL CROSS JOIN

For at hente alle poster fra begge tabeller skal du udføre følgende forespørgsel:

 SELECT * FROM customers CROSS JOIN contacts; 

Efter vellykket udførelse af forespørgslen vil den give følgende output:

MySQL CROSS JOIN

Når CROSS JOIN-sætningen er udført, vil du se, at den viser 42 rækker. Det betyder, at syv rækker fra kundetabellen ganges med de seks rækker fra kontakttabellen.

BEMÆRK: For at undgå resultatet af gentagne kolonner to gange, anbefales det at bruge individuelle kolonnenavne i stedet for SELECT *-sætning.

Problem med tvetydige kolonner i MySQL CROSS JOIN

Nogle gange er vi nødt til at hente de valgte kolonneposter fra flere tabeller. Disse tabeller kan indeholde nogle lignende kolonnenavne. I så fald giver MySQL CROSS JOIN-sætningen en fejl: kolonnenavnet er tvetydigt. Det betyder, at navnet på kolonnen er til stede i begge tabeller, og MySQL bliver forvirret over, hvilken kolonne du vil vise. Følgende eksempler forklarer det mere tydeligt:

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

Ovenstående CROSS JOIN kaster en fejl som angivet på billedet nedenfor:

MySQL CROSS JOIN

Dette problem kan løses ved at bruge tabelnavnet før kolonnenavnet. Ovenstående forespørgsel kan omskrives som:

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

Efter at have udført ovenstående forespørgsel, vil vi få følgende output:

MySQL CROSS JOIN

VENSTRE JOIN med WHERE-klausul

WHERE-klausulen bruges til at returnere filter resultat fra tabellen. Følgende eksempel illustrerer dette med CROSS JOIN-sætningen:

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

Efter vellykket udførelse af ovenstående forespørgsel vil den give følgende output:

MySQL CROSS JOIN