Sammanfattning :den här handledningen visar hur du använder SQLite inner join-sats för att söka efter data från flera tabeller.
Introduktion till SQLite inner join-klausul
I relationsdatabaser distribueras data ofta i många relaterade tabeller. En tabell är associerad med en annan tabell med hjälp av främmande nycklar.
För att söka efter data från flera tabeller använder du INNER JOIN
klausul. INNER JOIN
sats kombinerar kolumner från korrelerade tabeller.
Anta att du har två tabeller:A och B.
A har kolumner a1, a2 och f. B har kolumnerna b1, b2 och f. A-tabellen länkar till B-tabellen med hjälp av en främmande nyckelkolumn som heter f.
Följande illustrerar syntaxen för inner join-satsen:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
För varje rad i A-tabellen, INNER JOIN
sats jämför värdet på f-kolumnen med värdet på f-kolumnen i B-tabellen. Om värdet på f-kolumnen i A-tabellen är lika med värdet på f-kolumnen i B-tabellen, kombinerar den data från a1, a2, b1, b2, kolumner och inkluderar denna rad i resultatuppsättningen.
Med andra ord, INNER JOIN
sats returnerar rader från A-tabellen som har motsvarande rad i B-tabell.
Denna logik tillämpas om du går med i fler än 2 tabeller.
Se följande exempel.
Endast raderna i A-tabellen:(a1,1), (a3,3) har motsvarande rader i B-tabellen (b1,1), (b2,3) ingår i resultatuppsättningen.
Följande diagram illustrerar INNER JOIN
klausul:
SQLite INNER JOIN
exempel
Låt oss ta en titt på tracks
och albums
tabeller i exempeldatabasen. tracks
tabelllänkar till albums
tabell via AlbumId
kolumn.
I tracks
tabellen, AlbumId
kolumn är en främmande nyckel. Och i albums
tabellen, AlbumId
är den primära nyckeln.
För att söka efter data från båda tracks
och albums
tabeller använder du följande uttalande:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Prova det
För varje rad i spårtabellen använder SQLite värdet i albumid
kolumnen för tracks
tabell för att jämföra med värdet i albumid
av albums
tabell. Om SQLite hittar en matchning, kombinerar den data från rader i båda tabellerna i resultatuppsättningen.
Du kan inkludera AlbumId
kolumner från båda tabellerna i den slutliga resultatuppsättningen för att se effekten.
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)
Prova det
SQLite inre join – exempel på 3 tabeller
Se följande tabeller:tracks
albums
och artists
Ett spår tillhör ett album och ett album har många spår. tracks
tabell som är kopplad till albums
tabell via albumid
kolumn.
Ett album tillhör en artist och en artist har ett eller flera album. albums
tabelllänkar till artists
tabell via artistid
kolumn.
För att söka efter data från dessa tabeller måste du använda två inre join-satser i SELECT
uttalande enligt följande:
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)
Prova det
Du kan använda en WHERE-klausul för att få artistens spår och album med id 10 som följande uttalande:
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)
Prova det
I den här handledningen har du lärt dig hur du använder SQLite INNER JOIN
sats för att söka efter data från flera tabeller.