Lewe łączenie w MySQL służy do wysyłania zapytań o rekordy z wielu tabel. Klauzula ta jest podobna do klauzuli Inner Join, której można używać z instrukcją SELECT bezpośrednio po słowie kluczowym FROM. Kiedy użyjemy klauzuli Left Join, zwróci ona wszystkie rekordy z pierwszej tabeli (po lewej stronie), nawet jeśli nie znaleziono pasujących rekordów z drugiej tabeli (po prawej stronie). Jeśli nie znajdzie żadnego rekordu dopasowań w tabeli po prawej stronie, zwraca wartość null.
Innymi słowy, klauzula Left Join zwraca wszystkie wiersze z lewej tabeli i dopasowane rekordy z prawej tabeli lub zwraca wartość Null, jeśli nie znaleziono pasującego rekordu. To połączenie można również nazwać a Lewe połączenie zewnętrzne klauzula. Zatem Outer jest opcjonalnym słowem kluczowym używanym z Left Join.
Możemy to zrozumieć za pomocą następującej reprezentacji wizualnej, w której Left Joins zwraca wszystkie rekordy z tabeli po lewej stronie i tylko pasujące rekordy z tabeli po prawej stronie:
Składnia MySQL LEFT JOIN
Następująca składnia wyjaśnia klauzulę Left Join służącą do łączenia dwóch lub większej liczby tabel:
SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON Join_Condition;
W powyższej składni Tabela 1 jest tabelą po lewej stronie, oraz Tabela 2 to tabela po prawej stronie. Ta klauzula zwraca wszystkie rekordy z tabeli 1 i dopasowane rekordy z tabeli 2 na podstawie określonych warunek dołączenia .
Przykład LEWEGO DOŁĄCZENIA MySQL
Weźmy kilka przykładów, aby zrozumieć działanie klauzul Left Join lub Left Outer Join:
Klauzula LEFT JOIN służąca do łączenia dwóch tabel
Tutaj utworzymy dwie tabele ' klienci' I ' Zamówienia' który zawiera następujące dane:
Tabela: klienci
Tabela: zamówienia
Aby wybrać rekordy z obu tabel, wykonaj następujące zapytanie:
SELECT customers.customer_id, cust_name, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
Po pomyślnym wykonaniu zapytania wyświetli się następujący wynik:
MySQL LEFT JOIN z klauzulą USING
Tabela Klienci i Zamówienia mają tę samą nazwę kolumny, czyli identyfikator_klienta. W takim przypadku można również użyć lewego łączenia MySQL z klauzulą USING, aby uzyskać dostęp do rekordów. Poniższa instrukcja zwraca identyfikator klienta, nazwę klienta, zawód, cenę i datę przy użyciu klauzuli Left Join ze słowem kluczowym USING.
SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id);
Powyższa instrukcja da następujące dane wyjściowe:
MySQL LEFT JOIN z klauzulą Group By
Lewego łączenia można także używać z klauzulą GROUP BY. Poniższa instrukcja zwraca identyfikator klienta, nazwę klienta, kwalifikacje, cenę i datę przy użyciu klauzuli Left Join z klauzulą GROUP BY.
SELECT customers.customer_id, cust_name, qualification, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id GROUP BY price;
Powyższa instrukcja da następujące dane wyjściowe:
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 Left Join:
SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price>2500;
To stwierdzenie daje następujący wynik:
MySQL LEWY DOŁĄCZ do wielu tabel
Stworzyliśmy już dwie tabele o nazwie „ klienci' I ' Zamówienia' . Stwórzmy jeszcze jedną tabelę i nadajmy jej nazwę „ kontakty”, który zawiera następujące dane:
Wykonaj następującą instrukcję, aby połączyć trzy tabele klientów, zamówień i kontaktów:
SELECT customers.customer_id, cust_name, order_id, price, cellphone FROM customers LEFT JOIN contacts ON customer_id = contact_id LEFT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY income;
Po pomyślnym wykonaniu powyższego zapytania wyświetli się następujący wynik:
Użycie klauzuli LEFT JOIN w celu uzyskania niedopasowanych rekordów
Klauzula LEFT JOIN przydaje się także w przypadku, gdy chcemy uzyskać w tabeli rekordy, które nie zawierają pasujących wierszy danych z innej tabeli.
Możemy to zrozumieć na poniższym przykładzie, w którym zastosowano klauzulę LEFT JOIN w celu znalezienia klienta, który nie ma numeru telefonu komórkowego:
SELECT customer_id, cust_name, cellphone, homephone FROM customers LEFT JOIN contacts ON customer_id = contact_id WHERE cellphone IS NULL ;
Powyższa instrukcja zwraca następujące dane wyjściowe:
inaczej Java
Różnica między klauzulą WHERE i ON w MySQL LEFT JOIN
W LEFT Join warunek WHERE i ON daje inny wynik. Aby zrozumieć różnice między nimi, możemy zobaczyć następujące zapytania:
GDZIE Klauzula
SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price=2500;
Da to następujące dane wyjściowe, które zwracają:
Klauzula ON
SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500;
Da to następujące dane wyjściowe: