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
NULL
wartoś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 BY
klauzula, aby wyświetlić wiersze, którychAlbumId
jestNULL
wartości najpierw. - Po drugie, użyj
WHERE
klauzula iIS NULL
operatora, 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.