logo

MySQL CROSS JOIN

MySQL CROSS JOIN este folosit pentru a combina toate posibilitățile celor două sau mai multe tabele și returnează rezultatul care conține fiecare rând din toate tabelele care contribuie. CROSS JOIN este cunoscută și sub numele de CARTESIAN JOIN, care furnizează produsul cartezian al tuturor tabelelor asociate. Produsul cartezian poate fi explicat ca toate rândurile prezente în primul tabel înmulțite cu toate rândurile prezente în al doilea tabel. Este similar cu Inner Join, unde condiția de join nu este disponibilă cu această clauză.

O putem înțelege cu următoarea reprezentare vizuală în care CROSS JOIN returnează toate înregistrările din tabelul 1 și tabelul 2, iar fiecare rând este combinația de rânduri ale ambelor tabele.

arp - o comandă
MySQL CROSS JOIN

Sintaxa MySQL CROSS JOIN

Cuvântul cheie CROSS JOIN este întotdeauna folosit cu instrucțiunea SELECT și trebuie scris după clauza FROM. Următoarea sintaxă preia toate înregistrările din ambele tabele de unire:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

În sintaxa de mai sus, listele de coloane sunt numele coloanei sau câmpului pe care doriți să-l returnați, iar tabelul1 și tabelul2 este numele tabelului de la care preluați înregistrările.

Exemplu MySQL CROSS JOIN

Să luăm câteva exemple pentru a înțelege funcționarea clauzei Left Join sau Left Outer Join:

Clauza CROSS JOIN pentru unirea a două tabele

Aici, vom crea două tabele 'Clienți' și 'contacte' care contine urmatoarele date:

Tabel: clienți

MySQL CROSS JOIN

Tabel: contacte

long to string java
MySQL CROSS JOIN

Pentru a prelua toate înregistrările din ambele tabele, executați următoarea interogare:

 SELECT * FROM customers CROSS JOIN contacts; 

După executarea cu succes a interogării, va da următorul rezultat:

MySQL CROSS JOIN

Când instrucțiunea CROSS JOIN este executată, veți observa că afișează 42 de rânduri. Înseamnă că șapte rânduri din tabelul clienți se înmulțesc cu cele șase rânduri din tabelul cu contacte.

java deschiderea unui fișier

NOTĂ: Pentru a evita rezultatul coloanelor repetate de două ori, este recomandat să utilizați nume de coloane individuale în loc de instrucțiunea SELECT *.

Problemă cu coloanele ambigue în MySQL CROSS JOIN

Uneori, trebuie să preluăm înregistrările coloanei selectate din mai multe tabele. Aceste tabele pot conține unele nume de coloane similare. În acest caz, instrucțiunea MySQL CROSS JOIN aruncă o eroare: numele coloanei este ambiguu. Înseamnă că numele coloanei este prezent în ambele tabele, iar MySQL devine confuz cu privire la ce coloană doriți să afișați. Următoarele exemple explică mai clar:

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

CROSS JOIN de mai sus aruncă o eroare așa cum este prezentată în imaginea de mai jos:

număr prim java
MySQL CROSS JOIN

Această problemă poate fi rezolvată utilizând numele tabelului înaintea numelui coloanei. Interogarea de mai sus poate fi rescrisă ca:

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

După executarea interogării de mai sus, vom obține următorul rezultat:

MySQL CROSS JOIN

LEFT JOIN cu clauza WHERE

Clauza WHERE este folosită pentru a returna filtru rezultat din tabel. Următorul exemplu ilustrează acest lucru cu clauza 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;>

După executarea cu succes a interogării de mai sus, va da următorul rezultat:

MySQL CROSS JOIN