logo

POŁĄCZENIE KRZYŻOWE MySQL

MySQL CROSS JOIN służy do łączenia wszystkich możliwości dwóch lub więcej tabel i zwraca wynik zawierający każdy wiersz ze wszystkich tabel składowych. Funkcja CROSS JOIN jest również znana jako CARTESIAN JOIN i zapewnia iloczyn kartezjański wszystkich powiązanych tabel. Iloczyn kartezjański można wytłumaczyć jako pomnożenie wszystkich wierszy znajdujących się w pierwszej tabeli przez wszystkie wiersze występujące w drugiej tabeli. Jest to podobne do łączenia wewnętrznego, gdzie warunek łączenia nie jest dostępny w tej klauzuli.

podkreśl w przecenie

Możemy to zrozumieć za pomocą następującej reprezentacji wizualnej, w której CROSS JOIN zwraca wszystkie rekordy z tabeli 1 i tabeli 2, a każdy wiersz jest kombinacją wierszy obu tabel.

POŁĄCZENIE KRZYŻOWE MySQL

Składnia MySQL CROSS JOIN

Słowo kluczowe CROSS JOIN jest zawsze używane z instrukcją SELECT i musi być zapisane po klauzuli FROM. Następująca składnia pobiera wszystkie rekordy z obu tabel łączących:

 SELECT column-lists FROM table1 CROSS JOIN table2; 

W powyższej składni lista-kolumn to nazwa kolumny lub pola, które chcesz zwrócić, a tabela1 i tabela2 to nazwy tabeli, z której pobierane są rekordy.

Przykład łączenia krzyżowego MySQL

Weźmy kilka przykładów, aby zrozumieć działanie klauzul Left Join lub Left Outer Join:

Klauzula CROSS JOIN służąca do łączenia dwóch tabel

Tutaj stworzymy dwie tabele 'klienci' I 'Łączność' który zawiera następujące dane:

Tabela: klienci

POŁĄCZENIE KRZYŻOWE MySQL

Tabela: kontakty

ciąg zastępuje Java
POŁĄCZENIE KRZYŻOWE MySQL

Aby pobrać wszystkie rekordy z obu tabel, wykonaj następujące zapytanie:

 SELECT * FROM customers CROSS JOIN contacts; 

Po pomyślnym wykonaniu zapytania wyświetli się następujący wynik:

POŁĄCZENIE KRZYŻOWE MySQL

Po wykonaniu instrukcji CROSS JOIN zauważysz, że wyświetla ona 42 wiersze. Oznacza to, że siedem wierszy z tabeli klientów pomnożono przez sześć wierszy z tabeli kontaktów.

UWAGA: Aby uniknąć podwójnego powtórzenia kolumn, zaleca się użycie pojedynczych nazw kolumn zamiast instrukcji SELECT *.

Niejednoznaczny problem z kolumnami w MySQL CROSS JOIN

Czasami musimy pobrać wybrane rekordy kolumn z wielu tabel. Tabele te mogą zawierać podobne nazwy kolumn. W takim przypadku instrukcja MySQL CROSS JOIN zgłasza błąd: nazwa kolumny jest niejednoznaczna. Oznacza to, że nazwa kolumny występuje w obu tabelach i MySQL nie wie, którą kolumnę chcesz wyświetlić. Poniższe przykłady wyjaśniają to jaśniej:

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

Powyższe CROSS JOIN zgłasza błąd jak pokazano na obrazku poniżej:

POŁĄCZENIE KRZYŻOWE MySQL

Ten problem można rozwiązać, używając nazwy tabeli przed nazwą kolumny. Powyższe zapytanie można przepisać jako:

stół reakcji
 SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders; 

Po wykonaniu powyższego zapytania otrzymamy następujący wynik:

POŁĄCZENIE KRZYŻOWE MySQL

LEFT JOIN z klauzulą ​​WHERE

Klauzula WHERE służy do zwracania filtr wynik z tabeli. Poniższy przykład ilustruje to za pomocą klauzuli 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 pomyślnym wykonaniu powyższego zapytania wyświetli się następujący wynik:

POŁĄCZENIE KRZYŻOWE MySQL