Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite LEFT JOIN klauzula do zapytania o dane z wielu tabel.
Wprowadzenie do SQLite LEFT JOIN klauzula
Podobne do INNER JOIN klauzula LEFT JOIN klauzula jest opcjonalną klauzulą SELECT oświadczenie. Używasz LEFT JOIN klauzula do zapytania o dane z wielu powiązanych tabel.
Załóżmy, że mamy dwie tabele:A i B.
- A ma kolumny m i f.
- B ma n i f kolumn.
Aby wykonać połączenie między A i B za pomocą LEFT JOIN klauzula, użyj następującego oświadczenia:
SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;Code language: SQL (Structured Query Language) (sql)
Wyrażenie A.f = B.f jest wyrażeniem warunkowym. Oprócz operatora równości (=) możesz użyć innych operatorów porównania, takich jak większy niż (>), mniejszy niż (<) itp.
Instrukcja zwraca zestaw wyników, który zawiera:
- Wiersze w tabeli A (lewa tabela), które odpowiadają wierszom w tabeli B.
- Wiersze w tabeli A i wiersze w tabeli B wypełnione
NULLwartości w przypadku, gdy wiersz z tabeli A nie ma żadnych odpowiadających wierszy w tabeli B.
Innymi słowy, wszystkie wiersze w tabeli A są uwzględniane w zestawie wyników, niezależnie od tego, czy istnieją pasujące wiersze w tabeli B, czy nie.
Jeśli masz WHERE klauzula w instrukcji, search_condition w WHERE klauzula jest stosowana po dopasowaniu LEFT JOIN klauzula jest zakończona.
Zobacz poniższą ilustrację LEFT JOIN klauzula między tabelami A i B.
Wszystkie wiersze w tabeli A są zawarte w zestawie wyników.
Ponieważ drugi wiersz (a2,2) nie ma odpowiadającego wiersza w tabeli B, LEFT JOIN klauzula tworzy fałszywy wiersz wypełnione NULL .
Poniższy diagram Venna ilustruje LEFT JOIN klauzula.
Należy zauważyć, że LEFT OUTER JOIN to to samo co LEFT JOIN .
SQLite LEFT JOIN przykłady
Użyjemy artists i albums tabele w przykładowej bazie danych do demonstracji.
Jeden album należy do jednego artysty. Jednak jeden wykonawca może mieć zero lub więcej albumów.
Aby znaleźć wykonawców, którzy nie mają żadnych albumów, użyj LEFT JOIN klauzuli, wybieramy artystów i odpowiadające im albumy. Jeśli wykonawca nie ma żadnych albumów, wartość AlbumId kolumna ma wartość NULL.
Aby wyświetlić najpierw wykonawców, którzy nie mają żadnych albumów, mamy dwie możliwości:
- Najpierw użyj
ORDER BYklauzula, aby wyświetlić wiersze, którychAlbumIdjestNULLwartości najpierw. - Po drugie, użyj
WHEREklauzula iIS NULLoperatora, aby wyświetlić tylko artystów, którzy nie mają żadnych albumów.
Poniższa instrukcja używa LEFT JOIN klauzula z ORDER BY klauzula.
SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;Code language: SQL (Structured Query Language) (sql) Wypróbuj
Poniższa instrukcja używa LEFT JOIN klauzula z WHERE klauzula.
SELECT
artists.ArtistId
, AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
WHERE
AlbumId IS NULL;Code language: SQL (Structured Query Language) (sql) Wypróbuj
W tym samouczku nauczyłeś się korzystać z SQLite LEFT JOIN klauzula do zapytania o dane z wielu tabel.