Samenvatting :deze tutorial laat je zien hoe je SQLite inner join-clausule gebruikt om gegevens uit meerdere tabellen op te vragen.
Inleiding tot SQLite inner join-clausule
In relationele databases worden gegevens vaak verspreid in veel gerelateerde tabellen. Een tabel is gekoppeld aan een andere tabel met behulp van externe sleutels.
Om gegevens uit meerdere tabellen op te vragen, gebruikt u INNER JOIN
clausule. De INNER JOIN
clausule combineert kolommen uit gecorreleerde tabellen.
Stel dat u twee tabellen heeft:A en B.
A heeft kolommen a1, a2 en f. B heeft kolom b1, b2 en f. De A-tabel linkt naar de B-tabel met behulp van een externe sleutelkolom met de naam f.
Het volgende illustreert de syntaxis van de inner join-clausule:
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Voor elke rij in de A-tabel, de INNER JOIN
clausule vergelijkt de waarde van de f-kolom met de waarde van de f-kolom in de B-tabel. Als de waarde van de f-kolom in de A-tabel gelijk is aan de waarde van de f-kolom in de B-tabel, worden gegevens uit a1, a2, b1, b2, kolommen gecombineerd en wordt deze rij in de resultatenset opgenomen.
Met andere woorden, de INNER JOIN
clausule retourneert rijen uit de A-tabel die de overeenkomstige rij in de B-tabel heeft.
Deze logica wordt toegepast als u aan meer dan 2 tafels deelneemt.
Zie het volgende voorbeeld.
Alleen de rijen in de A-tabel:(a1,1), (a3,3) hebben de corresponderende rijen in de B-tabel (b1,1), (b2,3) zijn opgenomen in de resultatenset.
Het volgende diagram illustreert de INNER JOIN
clausule:
SQLite INNER JOIN
voorbeelden
Laten we eens kijken naar de tracks
en albums
tabellen in de voorbeelddatabase. De tracks
tabellinks naar de albums
tabel via AlbumId
kolom.
In de tracks
tabel, de AlbumId
kolom is een externe sleutel. En in de albums
tabel, de AlbumId
is de primaire sleutel.
Gegevens opvragen van beide tracks
en albums
tabellen, gebruik je de volgende verklaring:
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Probeer het
Voor elke rij in de tracktabel gebruikt SQLite de waarde in de albumid
kolom van de tracks
tabel om te vergelijken met de waarde in de albumid
van de albums
tafel. Als SQLite een overeenkomst vindt, combineert het gegevens van rijen in beide tabellen in de resultatenset.
U kunt de AlbumId
kolommen uit beide tabellen in de uiteindelijke resultatenset om het effect te zien.
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)
Probeer het
SQLite inner join – voorbeeld van 3 tabellen
Zie de volgende tabellen:tracks
albums
en artists
Eén nummer hoort bij één album en één album heeft veel nummers. De tracks
tabel gekoppeld aan de albums
tabel via albumid
kolom.
Eén album is van één artiest en één artiest heeft één of meerdere albums. De albums
tabellinks naar de artists
tabel via artistid
kolom.
Om gegevens uit deze tabellen op te vragen, moet u twee inner join-clausules gebruiken in de SELECT
verklaring als volgt:
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)
Probeer het
U kunt een WHERE-clausule gebruiken om de nummers en albums van de artiest met id 10 als de volgende verklaring te krijgen:
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)
Probeer het
In deze tutorial heb je geleerd hoe je SQLite INNER JOIN
gebruikt clausule om gegevens uit meerdere tabellen op te vragen.