Podsumowanie: w tym samouczku dowiesz się, jak używać klauzuli PostgreSQL LEFT JOIN
do wybierania danych z wielu tabel.
Wprowadzenie do PostgreSQL LEFT JOIN clause
Załóżmy, że masz dwie tabele:A
IB
.,
każdy wiersz w tabeli A
może mieć zero lub wiele odpowiadających wierszy w tabeli B
podczas gdy każdy wiersz w tabeli B
ma jeden i tylko jeden odpowiadający wiersz w tabeli A
.
aby wybrać dane z tabeli A
które mogą lub nie muszą mieć odpowiednie wiersze w tabeli B
, należy użyć klauzuli LEFT JOIN
.,
poniższa instrukcja ilustruje składnię LEFT JOIN
, która łączy tabelę A
z tabelą B
:
Code language: SQL (Structured Query Language) (sql)
aby połączyć tabelę A
z tabelą B
tabela używając lewego połączenia, wykonaj następujące kroki:
- najpierw określ kolumny w obu tabelach, z których chcesz wybrać dane w klauzuli
SELECT
. - Po Drugie, określ lewą tabelę (tabela
A
) w klauzuliFROM
., - Po Trzecie, określ właściwą tabelę (table
B
) w klauzuliLEFT JOIN
I warunek połączenia po słowie kluczowymON
.
klauzulaLEFT JOIN
rozpoczyna wybór danych z lewej tabeli. Dla każdego wiersza w lewej tabeli porównuje wartość w kolumnie pka
z wartością każdego wiersza w kolumnie fka
w prawej tabeli.,
Jeśli te wartości są równe, lewa klauzula join tworzy nowy wiersz zawierający kolumny, które pojawiają się w klauzuli SELECT
I dodaje ten wiersz do zestawu wyników.
Jeśli te wartości nie są równe, lewa klauzula join tworzy również nowy wiersz zawierający kolumny, które pojawiają się w SELECT
klauzula. Dodatkowo wypełnia kolumny pochodzące z prawej tabeli znakiem NULL.,
poniższy diagram Venna ilustruje działanie klauzuli LEFT JOIN
:
zauważ, że LEFT JOIN
jest również określany jako LEFT OUTER JOIN
.
PostgreSQL LEFT JOIN examples
spójrzmy na poniższe tabelefilm
Iinventory
z przykładowej bazy danych.,
każdy wiersz w tabelifilm
może mieć zero lub wiele wierszy w tabeli iv id=”7eb2379b8b”
table. Każdy wiersz w tabeliinventory
ma jeden i tylko jeden wiersz w tabelifilm
.
kolumnafilm_id
ustanawia połączenie między tabelamifilm
Iinventory
.,
poniższe polecenie używa LEFT JOIN
klauzuli do połączenia film
tabeli z inventory
tabeli:
gdy wiersz z tabeli film
nie ma pasującego wiersza w tabeli inventory
, wartość tabeli inventory_id
kolumna tego wiersza to NULL
.,
poniższe polecenie dodaje WHERE
klauzulę znajdującą filmy, których nie ma w spisie:
poniższe polecenie zwraca ten sam wynik., Różnica polega na tym, że używa aliasów tabel, aby zapytanie było bardziej zwięzłe:
Jeśli obie tabele mają tę samą nazwę kolumny używaną w ON
klauzula, możesz użyć składni USING
w następujący sposób:
ta technika jest przydatna, gdy chcesz wybrać wiersze z jednej tabeli, które nie mają pasujących wierszy w innej tabeli.