Résumé :ce didacticiel vous montre comment utiliser la clause de jointure interne SQLite pour interroger les données de plusieurs tables.
Introduction à la clause de jointure interne SQLite
Dans les bases de données relationnelles, les données sont souvent distribuées dans de nombreuses tables liées. Une table est associée à une autre table à l'aide de clés étrangères.
Pour interroger les données de plusieurs tables, vous utilisez INNER JOIN
clause. Le INNER JOIN
la clause combine les colonnes des tables corrélées.
Supposons que vous ayez deux tables :A et B.
A a les colonnes a1, a2 et f. B a les colonnes b1, b2 et f. La table A est liée à la table B à l'aide d'une colonne de clé étrangère nommée f.
Voici une illustration de la syntaxe de la clause de jointure interne :
SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;
Code language: SQL (Structured Query Language) (sql)
Pour chaque ligne de la table A, le INNER JOIN
La clause compare la valeur de la colonne f avec la valeur de la colonne f dans la table B. Si la valeur de la colonne f dans la table A est égale à la valeur de la colonne f dans la table B, elle combine les données des colonnes a1, a2, b1, b2 et inclut cette ligne dans le jeu de résultats.
En d'autres termes, le INNER JOIN
La clause renvoie les lignes de la table A qui ont la ligne correspondante dans la table B.
Cette logique est appliquée si vous rejoignez plus de 2 tables.
Voir l'exemple suivant.
Seules les lignes de la table A :(a1,1), (a3,3) ont les lignes correspondantes de la table B (b1,1), (b2,3) sont incluses dans le jeu de résultats.
Le schéma suivant illustre le INNER JOIN
clause :
SQLite INNER JOIN
exemples
Jetons un coup d'œil aux tracks
et albums
tables dans la base de données exemple. Les tracks
tableau des liens vers les albums
tableau via AlbumId
colonne.
Dans les tracks
table, le AlbumId
colonne est une clé étrangère. Et dans les albums
table, le AlbumId
est la clé primaire.
Pour interroger les données des deux tracks
et albums
tables, vous utilisez l'instruction suivante :
SELECT
trackid,
name,
title
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;
Code language: SQL (Structured Query Language) (sql)
Essayez-le
Pour chaque ligne de la table des pistes, SQLite utilise la valeur dans le albumid
colonne des tracks
tableau à comparer avec la valeur dans l'albumid
des albums
table. Si SQLite trouve une correspondance, il combine les données des lignes des deux tables dans le jeu de résultats.
Vous pouvez inclure le AlbumId
colonnes des deux tables dans le jeu de résultats final pour voir l'effet.
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)
Essayez-le
Jointure interne SQLite – Exemple de 3 tables
Voir les tableaux suivants :tracks
albums
et artists
Une piste appartient à un album et un album contient plusieurs pistes. Les tracks
table associée aux albums
tableau via albumid
colonne.
Un album appartient à un artiste et un artiste a un ou plusieurs albums. Les albums
liens de table vers les artists
tableau via artistid
colonne.
Pour interroger les données de ces tables, vous devez utiliser deux clauses de jointure interne dans le SELECT
déclaration comme suit :
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)
Essayez-le
Vous pouvez utiliser une clause WHERE pour obtenir les pistes et les albums de l'artiste avec l'identifiant 10 comme l'instruction suivante :
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)
Essayez-le
Dans ce tutoriel, vous avez appris à utiliser SQLite INNER JOIN
clause pour interroger les données de plusieurs tables.