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.