mathématiques appliquées (ECG 2e année) · Chapitre 13 · Exercice
Une jointure filtrée
Bases de données et travaux pratiques · Interroger une base · niveau 2
Énoncé
La table client a pour champs id, nom et ville ; la table commande a pour champs id, client_id et montant. Écrire la requête donnant le nom du client et le montant, pour les seules commandes de plus de euros passées par un client habitant Lyon.
Corrigé
SELECT client.nom, commande.montant
FROM commande
INNER JOIN client ON commande.client_id = client.id
WHERE commande.montant > 100 AND client.ville = 'Lyon';
L'ordre des clauses n'est pas décoratif. La jointure se fait d'abord : elle construit une table large où chaque commande porte aussi les champs de son client. C'est seulement ensuite que WHERE filtre les lignes de cette table large — et c'est ce qui permet de filtrer sur ville, un champ qui n'existe pas dans commande.
Le préfixe est obligatoire ici. Les deux tables possèdent un champ id : écrire id tout court serait ambigu. On préfixe donc systématiquement, client.nom et commande.montant, même quand le nom ne prête pas à confusion.
Deux points de syntaxe. La chaîne 'Lyon' est entre apostrophes simples, et le connecteur logique s'écrit AND — le programme n'en retient que AND, OR et NOT.
Le point à retenir. Une requête se lit dans l'ordre : de quelle table (FROM), recollée comment (INNER JOIN … ON), en gardant quelles lignes (WHERE), pour afficher quelles colonnes (SELECT). L'écriture, elle, commence par la fin.
Exercices semblables
- Lire une table corrigé
- Une condition composée corrigé
- Une jointure corrigé
- Ce que la jointure fait disparaître corrigé
- Insérer et modifier corrigé