Exploiter une base relationnelle

15 minutes de SQL

Croiser deux tables avec INNER JOIN

Thème : Exploiter une base relationnelle

Niveau : ECG2

Année : Maths appliquées

Objectif : Savoir faire une jointure INNER JOIN pour relier deux tables via une clé étrangère, et écrire clairement la condition ON.

Pourquoi une jointure ?

Dans une base relationnelle, les informations sont réparties dans plusieurs tables. Une jointure permet de relier ces tables en utilisant les identifiants (clé primaire ↔ clé étrangère).

L’idée est simple : on associe chaque ligne d’une table avec la ligne correspondante d’une autre table lorsque les identifiants coïncident.

Syntaxe

SELECT ...
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t2.cle_etrangere = t1.cle_primaire;
  • INNER JOIN ne conserve que les lignes pour lesquelles la condition de jointure est vraie. Si aucune correspondance n’existe, la ligne n’apparaît pas dans le résultat.
  • La condition ON est une conjonction d’égalités reliant une clé étrangère à une clé primaire.
  • On peut donner un alias à une table avec AS (par exemple ETUDIANTS AS E). Cela permet d’écrire E.nom au lieu de ETUDIANTS.nom, ce qui rend la requête plus lisible.
  • L’écriture FROM ETUDIANTS AS E est équivalente à FROM ETUDIANTS E, mais la présence de AS rend l’alias plus explicite.

Exemples commentés

Exemple 1

Dans la base Boutique, on veut afficher le nom des clients ainsi que la date de leurs commandes.

clients(id_client, nom, ville)
commandes(id_commande, id_client, date_commande)

La colonne commandes.id_client est une clé étrangère qui référence clients.id_client. Pour relier une commande à son client, on impose donc : commandes.id_client = clients.id_client.

On utilise des alias (AS C et AS Co) pour rendre l’écriture plus lisible.

SELECT C.nom, Co.date_commande
FROM clients AS C
INNER JOIN commandes AS Co
ON Co.id_client = C.id_client;
Exemple 2

Dans la base Personnel, on veut afficher le nom de chaque employé ainsi que le nom du service auquel il appartient.

employes(id_emp, nom, id_service, salaire)
services(id_service, nom_service)

La colonne employes.id_service référence services.id_service. On relie donc chaque employé à son service grâce à cette égalité.

SELECT E.nom, S.nom_service
FROM employes AS E
INNER JOIN services AS S
ON E.id_service = S.id_service;
Exemple 3

Dans la base Communication, on veut afficher le nom des abonnés ainsi que le nom du forfait souscrit.

abonnes(id_abonne, nom, id_forfait)
forfaits(id_forfait, nom_forfait, prix)

La clé étrangère abonnes.id_forfait référence forfaits.id_forfait. La jointure permet donc d’associer à chaque abonné son forfait.

SELECT A.nom, F.nom_forfait, F.prix
FROM abonnes AS A
INNER JOIN forfaits AS F
ON A.id_forfait = F.id_forfait;
Exemple 4

Dans la base LocationVoitures, on veut afficher la marque des voitures louées ainsi que la date de début de location.

voitures(id_voiture, marque, modele, prix_jour)
locations(id_location, id_voiture, date_debut, date_fin)

La colonne locations.id_voiture référence voitures.id_voiture. La jointure associe donc chaque location au véhicule correspondant.

SELECT V.marque, L.date_debut
FROM voitures AS V
INNER JOIN locations AS L
ON L.id_voiture = V.id_voiture;
Exemple 5

Dans la base Biblio, on veut afficher, pour chaque vente, le nom du client et le titre du livre acheté.

clients(id_client, nom, ville)
ventes(id_vente, id_client, isbn, date_vente, quantite)
livres(isbn, titre, auteur, annee, prix)

La table ventes contient deux clés étrangères :

  • ventes.id_client référence clients.id_client
  • ventes.isbn référence livres.isbn

On doit donc effectuer deux jointures : d’abord entre ventes et clients, puis entre ventes et livres.

SELECT C.nom, L.titre, V.date_vente, V.quantite
FROM ventes AS V
INNER JOIN clients AS C
ON V.id_client = C.id_client
INNER JOIN livres AS L
ON V.isbn = L.isbn;

Et pour quelques minutes de plus…

Prendre en main la programmation, pas à pas.

Ces exercices sont conçus pour t’aider à maîtriser progressivement les requêtes SQL, en partant de la lecture et de la compréhension du code, jusqu’à l’écriture autonome de requêtes complètes.

L’objectif n’est pas d’aller vite, mais de construire des automatismes solides, en comprenant ce que fait chaque commande, puis en apprenant à les utiliser par toi-même.

L’ordre des exercices est volontaire : on lit, on comprend, on complète, puis on écrit seul. Prends le temps de chaque étape : c’est la clé pour progresser durablement.

Niveau 1 Lire et interpréter

Comprendre avant d’écrire.
Dans cette première série, tu observes et analyses des requêtes SQL déjà écrites. L’objectif est de comprendre la logique et d’être capable d'expliquer ce que renvoie la requête.

Niveau 2 Compléter une requête

Écrire, mais avec un cadre.
Ici, tu passes à l’écriture sans partir de zéro. Le squelette de la requête est fourni : il te reste à compléter certaines parties pour que le code fonctionne correctement. Ce format permet de se concentrer sur l’essentiel, sans se perdre dans la structure générale.

Niveau 3 Écrire une requête

Passer à l’autonomie.
Dans cette dernière série, tu écris les requêtes complètes à partir d’une consigne. Tu dois organiser ton code, choisir les bonnes instructions et construire la logique globale. C’est ici que tu mets en pratique tout ce que tu as appris dans les niveaux précédents.

error: Ce contenu est protégé !