Formation PUB210 : SQLite, 2018 Les jointures internes

8.1 Afficher des données tirées de plusieurs tables


Lorsqu'une base de données est correctement modélisée, les informations sont réparties dans plusieurs tables. Il est tout de même possible de retrouver toutes les informations désirées à l'aide d'une seule requête SQL.

La technique qui permet d'y arriver s'appelle jointure. Dans leur forme la plus simple, les jointures seront dites internes. Les jointures internes sont réalisées à l'aide des mots-clés INNER JOIN.

La syntaxe d'une jointure interne va comme suit :

Syntaxe SQLite

SELECT table1.champ1, table2.champ2

FROM table1

INNER JOIN table2

ON table1.champ3 = table2.champ4;

La clause ON utilisera généralement la clé primaire d'une table et la clé étrangère de l'autre table.

Il n'est pas nécessaire qu'une contrainte d'intégrité référentielle soit en place pour réaliser une jointure.

Dans la requête, les sauts de ligne sont optionnels. Ils ont pour but de faciliter la lecture de la requête.

Prenons l'exemple d'un étudiant inscrit dans un établissement d'enseignement.

Tables etudiants et etablissements

Il est possible de retrouver le nom de l'étudiant et le nom de son établissement à l'aide de la requête suivante :

SQLite

SELECT etudiants.nomfamille, etudiants.prenom, etablissements.nom

FROM etudiants

INNER JOIN etablissements

ON etudiants.etablissement_id = etablissements.id

WHERE etudiants.nomfamille = 'Bourgeois';

Cette requête donne les informations tirées de plusieurs table comme si le tout était consigné dans une seule table.

Jointure interne

Remarquez que lorsque le nom d'un champ est unique dans les tables impliquées dans la jointure, il n'est pas obligatoire de préciser le nom de la table devant le nom du champ.

Dans l'exemple précédent, le seul champ dont le nom se répète est id. La requête pourra donc être simplifiée comme suit :

SQLite

SELECT nomfamille, prenom, nom

FROM etudiants

INNER JOIN etablissements

ON etablissement_id = etablissements.id

WHERE nomfamille = 'Bourgeois';

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre