SQLite
 sql >> Base de données >  >> RDS >> SQLite

Jointure interne SQLite

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.