Exploiter une base relationnelle

15 minutes de SQL

Utiliser une sous-requête avec IN

Thème : Exploiter une base relationnelle

Niveau : ECG2

Année : Maths appliquées

Objectif : Comprendre le principe d’une sous-requête (requête dans une requête), par exemple avec IN, pour exprimer proprement « sélectionner ceux dont la valeur appartient à un ensemble ».

Sous-requête : l’idée

Une sous-requête est une requête SQL placée à l’intérieur d’une autre. Elle permet souvent d’écrire une condition « en deux temps ».

Un schéma classique :

... WHERE x IN (SELECT ...)

La sous-requête calcule un ensemble de valeurs, et la requête principale garde les lignes dont x appartient à cet ensemble.

Remarque : selon les enseignants, les sous-requêtes peuvent être vues comme un prolongement naturel des requêtes de base ; l’essentiel ici est d’en comprendre la logique.

Exemples commentés

Exemple 1

On veut récupérer les pseudos des joueurs ayant joué à une date donnée. On commence par sélectionner les identifiants dans parties, puis on récupère les pseudos dans joueurs.

joueurs(id, pseudo, credit, niveau) et parties(id, date, score)

SELECT pseudo
FROM joueurs
WHERE id IN (
  SELECT id
  FROM parties
  WHERE date = '2024-06-01'
);
Exemple 2

On affiche les clients ayant passé au moins une commande. La sous-requête donne les id_client présents dans commandes.

SELECT nom, ville
FROM clients
WHERE id_client IN (
  SELECT id_client
  FROM commandes
);
Exemple 3

On affiche les films dont le budget est supérieur à la moyenne des budgets de tous les films. La sous-requête calcule cette moyenne.

SELECT film_titre, budget
FROM films
WHERE budget > (
  SELECT AVG(budget)
  FROM films
);
Exemple 4

On veut afficher les triangles dont le périmètre est strictement supérieur au périmètre moyen.

SELECT idt, ab, ac, bc
FROM triangles
WHERE (ab + ac + bc) > (
  SELECT AVG(ab + ac + bc)
  FROM triangles
);
Exemple 5

Dans une base « étudiants / notes », on veut afficher les étudiants ayant au moins une note inférieure à 8. La sous-requête repère les identifiants concernés dans notes.

etudiants(id_etudiant, nom, prenom) et notes(id_etudiant, matiere, note)

SELECT nom, prenom
FROM etudiants
WHERE id_etudiant IN (
  SELECT id_etudiant
  FROM notes
  WHERE note < 8
);

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é !