sql >> Databasteknik >  >> RDS >> SQLite

SQLite Inner Join

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.


  1. Hur man skapar associativa arrayer i Oracle Database

  2. SQL Server AlwaysOn ( Availability Group ) Arkitektur och steg för steg installation -1

  3. Förhindra att spara ändringar som kräver att tabellen återskapas negativa effekter

  4. Få veckonummer från ett datum i PostgreSQL