MySQL LEFT JOIN (Polski)

Podsumowanie: w tym samouczku dowiesz się o klauzuli MySQL LEFT JOIN I jak zastosować ją do zapytania danych z dwóch lub więcej tabel.

Wprowadzenie do MySQL LEFT JOIN

LEFT JOIN pozwala na zapytanie danych z dwóch lub więcej tabel. Podobnie doINNER JOIN, LEFT JOINjest opcjonalną klauzulą SELECT, która pojawia się bezpośrednio po FROM klauzuli.,

Załóżmy, że chcesz połączyć dwie tabele t1 I t2.

poniższe polecenie pokazuje, jak używać klauzuli LEFT JOIN aby połączyć dwie tabele:

Code language: SQL (Structured Query Language) (sql)

Kiedy używasz klauzuli LEFT JOIN, wprowadza się pojęcia lewej i prawej tabeli.

w powyższej składni t1jest lewą tabelą, a t2 jest prawą tabelą.,

klauzulaLEFT JOIN wybiera dane z lewej tabeli (t1). Pasuje do każdego wiersza z lewej tabeli (t1) z każdym wierszem z prawej tabeli (t2) na podstawie join_condition.

Jeśli wiersze z obu tabel powodują, że warunek join zostanie oceniony naTRUE,LEFT JOIN łączy kolumny wierszy z obu tabel w nowy wiersz i zawiera ten nowy wiersz w wierszach wynikowych.,

jeśli wiersz z lewej tabeli (t1) nie pasuje do żadnego wiersza z prawej tabeli (t2),LEFT JOIN nadal łączy kolumny wierszy z obu tabel w nowy wiersz i zawiera nowy wiersz w wierszach wynikowych. Jednak używa NULL dla wszystkich kolumn wiersza z prawej tabeli.

innymi słowy, LEFT JOIN zwraca wszystkie wiersze z lewej tabeli niezależnie od tego, czy wiersz z lewej tabeli ma pasujący wiersz z prawej tabeli, czy nie., Jeśli nie ma dopasowania, kolumny wiersza z prawej tabeli będą zawierać NULL.

poniższy diagram Venn pomaga Ci zobrazować działanie klauzuli LEFT JOIN:

MySQL LEFT JOIN – diagram Venn

MySQL LEFT JOIN examples

weźmy kilka przykładów użycia klauzuli LEFT JOIN.,

1) przy użyciu MySQL LEFT JOIN klauzula do łączenia dwóch tabel

zobacz następujące tabelecustomers Iorders w przykładowej bazie danych.

każdy klient może mieć zero lub więcej zamówień, podczas gdy każde zamówienie musi należeć do jednego klienta.,

to zapytanie wykorzystuje klauzulę LEFT JOIN, aby znaleźć wszystkich klientów i ich zamówienia:

Code language: SQL (Structured Query Language) (sql)

Alternatywnie, można zapisać kilka wpisów za pomocą aliasów tabeli:

Code language: SQL (Structured Query Language) (sql)

w tym przykładzie:

  • customers jest lewą tabelą i orders jest właściwą tabelą.
  • klauzulaLEFT JOIN zwraca wszystkich klientów, w tym klientów, którzy nie mają zamówienia., Jeśli klient nie ma zamówienia, wartości w kolumnie orderNumber I statusNULL.,

ponieważ zarówno klienci tabeli, jak i zamówienia mają tę samą nazwę kolumny ( customerNumber) w warunku łączenia z operatorem equal, możesz użyć składni w następujący sposób:

Code language: SQL (Structured Query Language) (sql)

następujące klauzule są równoważne:

Code language: SQL (Structured Query Language) (sql)

i

Code language: SQL (Structured Query Language) (sql)

jeśli zastąpisz LEFT JOIN klauzulą INNER JOIN, otrzymasz tylko klientów, którzy mają co najmniej jedno zamówienie.,

2) Używanie MySQL LEFT JOIN klauzula do znajdowania niepasujących wierszy

LEFT JOIN klauzula jest bardzo przydatna, gdy chcesz znaleźć wiersze w tabeli, która nie ma pasującego wiersza z innej tabeli.,”>

aby znaleźć klientów, którzy nie mają zamówienia:

Code language: SQL (Structured Query Language) (sql)

3) za pomocą MySQL LEFT JOIN dołączyć do trzech tabel

zobacz następujące trzy tabele employees, customers I payments:

iv id=”Dd78e0e161″

Ten przykład wykorzystuje dwie klauzule LEFT JOINdo łączenia trzech tabel: employees, customersI payments.,

Code language: SQL (Structured Query Language) (sql)

to zdjęcie pokazuje częściowe wyjście:

Jak to działa.

  • pierwszyLEFT JOINzwraca wszystkich pracowników i klientów, którzy reprezentowali każdego pracownika lubNULL jeśli pracownik nie odpowiada za żadnego klienta.
  • drugiLEFT JOIN zwraca płatności każdego klienta reprezentowanego przez pracownika lubNULL jeśli klient nie ma płatności.

warunek w klauzuli WHERE vs., Na klauzuli

patrz poniższy przykład.

Code language: SQL (Structured Query Language) (sql)

w tym przykładzie użyto klauzuliLEFT JOIN do zapytania danych z tabelorders IorderDetails. Zapytanie zwraca zamówienie i jego pozycje liniowe o numerze zamówienia 10123.,

Jeśli jednak przeniesiesz warunek z WHERE do ON klauzula:

Code language: SQL (Structured Query Language) (sql)

będzie miała inne znaczenie.,

w tym przypadku zapytanie zwraca wszystkie zamówienia, ale tylko zamówienie 10123 będzie miało pozycje linii powiązane z nim, jak na poniższym obrazku:

zauważ, że dla klauzuli INNER JOIN warunek w klauzuli ON jest równoważny warunkowi w klauzuli WHERE.

w tym samouczku nauczyłeś się używać klauzuli MySQL LEFT JOIN do łączenia danych z dwóch lub więcej tabel.,

  • czy ten tutorial był pomocny?
  • YesNo

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *