Oversigt :denne vejledning viser dig, hvordan du bruger SQLite inner join-klausul til at forespørge data fra flere tabeller.
Introduktion til SQLite indre joinsætning
I relationelle databaser er data ofte fordelt i mange relaterede tabeller. En tabel er knyttet til en anden tabel ved hjælp af fremmednøgler.
For at forespørge data fra flere tabeller, bruger du INNER JOIN
klausul. INNER JOIN
klausul kombinerer kolonner fra korrelerede tabeller.
Antag, at du har to tabeller:A og B.
A har kolonnerne a1, a2 og f. B har b1, b2 og f kolonne. A-tabellen linker til B-tabellen ved hjælp af en fremmednøglekolonne ved navn f.
Det følgende illustrerer syntaksen for den indre joinsætning:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
For hver række i A-tabellen vises INNER JOIN
klausul sammenligner værdien af f-kolonnen med værdien af f-kolonnen i B-tabellen. Hvis værdien af f-kolonnen i A-tabellen er lig med værdien af f-kolonnen i B-tabellen, kombinerer den data fra a1, a2, b1, b2, kolonner og inkluderer denne række i resultatsættet.
Med andre ord, INNER JOIN
klausul returnerer rækker fra A-tabellen, der har den tilsvarende række i B-tabellen.
Denne logik anvendes, hvis du forbinder mere end 2 tabeller.
Se følgende eksempel.
Kun rækkerne i A-tabellen:(a1,1), (a3,3) har de tilsvarende rækker i B-tabellen (b1,1), (b2,3) med i resultatsættet.
Følgende diagram illustrerer INNER JOIN
klausul:
SQLite INNER JOIN
eksempler
Lad os tage et kig på tracks
og albums
tabeller i eksempeldatabasen. tracks
tabellinks til albums
tabel via AlbumId
kolonne.
I tracks
tabellen, AlbumId
kolonne er en fremmednøgle. Og i albums
tabellen, AlbumId
er den primære nøgle.
For at forespørge data fra begge tracks
og albums
tabeller, bruger du følgende sætning:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Prøv det
For hver række i sportabellen bruger SQLite værdien i albumid
kolonne af tracks
tabel for at sammenligne med værdien i albumid
af albums
bord. Hvis SQLite finder et match, kombinerer det data fra rækker i begge tabeller i resultatsættet.
Du kan inkludere AlbumId
kolonner fra begge tabeller i det endelige resultatsæt for at 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)
Prøv det
SQLite indre joinforbindelse – 3 tabeller eksempel
Se følgende tabeller:tracks
albums
og artists
Et nummer hører til et album, og et album har mange numre. tracks
tabel knyttet til albums
tabel via albumid
kolonne.
Et album tilhører én kunstner, og én kunstner har et eller flere album. albums
tabellinks til artists
tabel via artistid
kolonne.
For at forespørge data fra disse tabeller skal du bruge to indre join-klausuler i SELECT
erklæring som følger:
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)
Prøv det
Du kan bruge en WHERE-klausul til at hente numrene og albummene fra kunstneren med id 10 som følgende udsagn:
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)
Prøv det
I denne tutorial har du lært, hvordan du bruger SQLite INNER JOIN
klausul for at forespørge data fra flere tabeller.