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 :
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.
Il est possible de retrouver le nom de l'étudiant et le nom de son établissement à l'aide de la requête suivante :
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.
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 :
SELECT nomfamille, prenom, nom
FROM etudiants
INNER JOIN etablissements
ON etablissement_id = etablissements.id
WHERE nomfamille = 'Bourgeois';
▼Publicité