Резюме :този урок ви показва как да използвате клауза за вътрешно присъединяване на SQLite за запитване на данни от множество таблици.
Въведение в клаузата за вътрешно присъединяване на SQLite
В релационните бази данни данните често се разпределят в много свързани таблици. Една таблица е свързана с друга таблица с помощта на външни ключове.
За да заявите данни от множество таблици, използвате INNER JOIN
клауза. INNER JOIN
клаузата комбинира колони от корелирани таблици.
Да предположим, че имате две таблици:A и B.
A има колони a1, a2 и f. B има b1, b2 и f колона. Таблицата A се свързва с таблицата B с помощта на колона с външен ключ с име f.
Следното илюстрира синтаксиса на клаузата за вътрешно свързване:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
За всеки ред в таблицата A, INNER JOIN
клауза сравнява стойността на f колоната със стойността на f колоната в таблицата B. Ако стойността на колоната f в таблицата A е равна на стойността на колоната f в таблицата B, тя комбинира данни от a1, a2, b1, b2, колони и включва този ред в набора от резултати.
С други думи, INNER JOIN
клаузата връща редове от таблица A, която има съответния ред в таблица B.
Тази логика се прилага, ако се присъедините към повече от 2 маси.
Вижте следния пример.
Само редовете в таблицата A:(a1,1), (a3,3) имат съответните редове в таблица B (b1,1), (b2,3) са включени в набора от резултати.
Следната диаграма илюстрира INNER JOIN
клауза:
SQLite INNER JOIN
примери
Нека да разгледаме tracks
и albums
таблици в примерната база данни. tracks
таблица връзки към albums
таблица чрез AlbumId
колона.
В tracks
таблица, AlbumId
колоната е външен ключ. И в albums
таблица, AlbumId
е първичният ключ.
За запитване на данни от двата tracks
и albums
таблици, използвате следния израз:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
За всеки ред в таблицата за проследяване SQLite използва стойността в albumid
колона на tracks
таблица за сравнение със стойността в albumid
от albums
маса. Ако SQLite намери съвпадение, той комбинира данни от редове в двете таблици в набора от резултати.
Можете да включите AlbumId
колони от двете таблици в крайния набор от резултати, за да видите ефекта.
SELECT
trackid,
name,
tracks.albumid AS album_id_tracks,
albums.albumid AS album_id_albums,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
SQLite вътрешно свързване – пример за 3 таблици
Вижте следните таблици:tracks
albums
и artists
Една песен принадлежи на един албум, а един албум има много песни. tracks
таблица, свързана с albums
таблица чрез albumid
колона.
Един албум принадлежи на един изпълнител, а един изпълнител има един или много албуми. albums
връзки към таблицата към artists
таблица чрез artistid
колона.
За да заявите данни от тези таблици, трябва да използвате две вътрешни клаузи за свързване в SELECT
изявление, както следва:
SELECT
trackid,
tracks.name AS track,
albums.title AS album,
artists.name AS artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
Можете да използвате клауза WHERE, за да получите песните и албумите на изпълнителя с идентификатор 10 като следното изявление:
SELECT
trackid,
tracks.name AS Track,
albums.title AS Album,
artists.name AS Artist
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid
WHERE
artists.artistid = 10;
Code language: SQL (Structured Query Language) (sql)
Опитайте го
В този урок научихте как да използвате SQLite INNER JOIN
клауза за запитване на данни от множество таблици.