W poprzednim wpisie przedstawiłem informacje na temat inner join. W tym wpisie poznasz left join(czasami nazywanego również left outer join). W tym przypadku lewa tabela będzie miała zero lub wiele połączeń z tabelą prawą. Tabela prawa ma dokładnie jedno połączenie z tabelą lewą.
PostgreSQL Left-Join Nieco teorii…
Ponownie przeanalizuj prosty przykład, dzięki któremu zrozumiesz co i jak działa w left join.
Left join pozwala na pobranie wszystkich danych z lewej tabeli (A) i wyświetlenie ich nawet jeżeli w tabeli prawej (B) nie ma wartości, tzn. znajduje się tam atrybut nieokreślone NULL. Poniżej zobacz schemat użycia left join. Ponownie definiujesz lewą tabelę A jako główną, sam left join ponownie łączy klucz główny z tabeli A z kluczem obcym w tabeli B.
1 2 3 4 5 6 7 8 |
SELECT A.pka, A.c1, B.pkb, B.c2 FROM A LEFT JOIN B ON A.pka = B.fka; |
Przykłady, przykłady…
Czas przejść do praktyki w pracy z left join. Skorzystasz z dwóch tabel, których schemat widzisz poniżej. Tabela film będzie tabelą lewą (główną), tabela inventory będzie tabelą prawą.
Poniższe zapytanie połączy te 2 tabele, aby w ich wyniku wyświetlić id filmu, jego tytuł oraz numer inwentarzowy. Tym razem również użyłem krótkiego opisu tabel, aby rozdzielić nazwy tych samym kolumn w różnych tabelach.
1 2 3 4 5 6 7 |
SELECT f.film_id, f.title, i.inventory_id FROM film f LEFT JOIN inventory i ON f.film_id=i.film_id |
Podobnie jak w przypadku inner join, możesz użyć klauzuli WHERE, ale tym razem aby wyświetlić atrybut nieokreślony NULL.
1 2 3 4 5 6 7 8 |
SELECT f.film_id, f.title, i.inventory_id FROM film f LEFT JOIN inventory i ON f.film_id=i.film_id WHERE i.inventory_id is NULL; |
Poniżej wynik tego zapytania. Widzisz, że lewa tabela wyświetliła wszystko co ma u siebie, bez patrzenia czy w prawej pasuje jakakolwiek wartość.
W kolejnym wpisie pokażę Self Join.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).