sql >> Database >  >> RDS >> SQLite

SQLite Inner Join

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.


  1. ATAN2() Functie in Oracle

  2. LOG() Voorbeelden in SQL Server

  3. ORA-24550:signaal ontvangen:[si_signo=6] fout

  4. 2 manieren om alle opgeslagen procedures in MySQL op te sommen