Adloun

Un filtre, puis une jointure

Exercice supplémentaire · niveau 1 (application) · mathématiques (ECT 2e année), chapitre 12 — Informatique et travaux pratiques · Bases de données

Énoncé

Une base contient client (champs id, nom, ville) et commande (champs num, id_client, montant). Écrire 1. la requête affichant le nom des clients de Lyon, 2. la requête affichant, pour chaque commande, le nom du client et le montant.

Corrigé

1. Le filtre sur une seule table. SELECT choisit la colonne à afficher, FROM la table, WHERE les lignes à garder :


SELECT nom FROM client
WHERE ville = 'Lyon';

La valeur textuelle se met entre apostrophes ; l'égalité s'écrit avec un seul signe =, contrairement à Python.

2. La jointure. Il faut ici deux tables, reliées par la clé étrangère commande.id_client, qui reprend la clé primaire client.id :


SELECT client.nom, commande.montant FROM commande
INNER JOIN client ON commande.id_client = client.id;

Pourquoi les préfixes. Ils désignent sans ambiguïté la table d'où vient chaque champ. Ils sont indispensables dès qu'un même nom de champ existe dans les deux tables, et recommandés dans tous les cas : la requête se relit mieux.

Le rôle de ON. Elle dit comment relier les deux tables. Sans elle, la jointure n'a pas de sens. À ne pas confondre avec WHERE, qui dit quelles lignes garder une fois le rapprochement fait.

Pour combiner les deux. Une clause WHERE client.ville = 'Lyon' ajoutée à la seconde requête, après le ON, n'afficherait que les commandes des clients lyonnais.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.