Резюме :в този урок ще научите как да използвате SQLite LEFT JOIN
клауза за запитване на данни от множество таблици.
Въведение в SQLite LEFT JOIN
клауза
Подобно на INNER JOIN
клауза, LEFT JOIN
клаузата е незадължителна клауза на SELECT
изявление. Използвате LEFT JOIN
клауза за запитване на данни от множество свързани таблици.
Да предположим, че имаме две таблици:A и B.
- A има m и f колони.
- B има n и f колони.
За да извършите свързване между A и B, като използвате LEFT JOIN
клауза, използвате следното изявление:
SELECT
a,
b
FROM
A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;
Code language: SQL (Structured Query Language) (sql)
Изразът A.f = B.f
е условен израз. Освен оператора за равенство (=) можете да използвате и други оператори за сравнение, като по-голямо от (>), по-малко от (<) и т.н.
Инструкцията връща набор от резултати, който включва:
- Редове в таблица А (лява таблица), които имат съответни редове в таблица Б.
- Редове в таблицата A и редовете в таблица B са запълнени с
NULL
стойности, в случай че редът от таблица А няма съответни редове в таблица Б.
С други думи, всички редове в таблица A се включват в набора от резултати, независимо дали има съвпадащи редове в таблица B или не.
В случай, че имате WHERE
клауза в изявлението, search_condition
в WHERE
Клаузата се прилага след съвпадението на LEFT JOIN
клаузата завършва.
Вижте следната илюстрация на LEFT JOIN
клауза между таблиците A и B.
Всички редове в таблица A са включени в набора от резултати.
Тъй като вторият ред (a2,2)
няма съответен ред в таблица B, LEFT JOIN
клаузата създава фалшив ред попълнено с NULL
.
Следващата диаграма на Вен илюстрира LEFT JOIN
клауза.
Отбелязва се, че LEFT OUTER JOIN
е същото като LEFT JOIN
.
SQLite LEFT JOIN
примери
Ще използваме artists
и albums
таблици в примерната база данни за демонстрация.
Един албум принадлежи на един изпълнител. Въпреки това един изпълнител може да има нула или повече албума.
За да намерите изпълнители, които нямат албуми, като използвате LEFT JOIN
клауза, ние избираме изпълнители и съответните им албуми. Ако изпълнител няма албуми, стойността на AlbumId
колоната е NULL.
За да покажем първо изпълнителите, които нямат албуми, имаме два избора:
- Първо, използвайте
ORDER BY
клауза за изброяване на редовете, чийтоAlbumId
еNULL
първо стойности. - Второ, използвайте
WHERE
клауза иIS NULL
оператор, за да посочи само изпълнители, които нямат албуми.
Следното изявление използва LEFT JOIN
клауза с ORDER BY
клауза.
SELECT
artists.ArtistId,
AlbumId
FROM
artists
LEFT JOIN albums ON
albums.ArtistId = artists.ArtistId
ORDER BY
AlbumId;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Следното изявление използва LEFT JOIN
клауза с WHERE
клауза.
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)
Опитайте го
В този урок научихте как да използвате SQLite LEFT JOIN
клауза за запитване на данни от множество таблици.