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 Amoże mieć zero lub wiele odpowiadających wierszy w tabeli Bpodczas gdy każdy wiersz w tabeli Bma jeden i tylko jeden odpowiadający wiersz w tabeli A.
aby wybrać dane z tabeli Aktó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 JOINI 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 inventorytabeli:
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.