Systèmes d'information de gestion · Terminale STMGBac
Requêtes et jointures : quiz de Terminale STMG
Publié le 11 novembre 2026 · Mis à jour le 11 novembre 2026 · Signaler une erreur
L'essentiel
- Une jointure relie deux tables grâce à un champ commun : la clé primaire d'un côté, la clé étrangère de l'autre.
- La condition de jointure s'écrit après ON ; le filtre sur les lignes s'écrit après WHERE.
- INNER JOIN garde seulement les lignes qui ont une correspondance ; LEFT JOIN garde aussi toutes les lignes de la table de gauche.
- Sans condition de jointure, on obtient toutes les combinaisons de lignes (produit cartésien).
- Une jointure produit un résultat de lecture : les tables d'origine ne changent pas.
Avant de commencer
Ce quiz porte sur les requêtes et les jointures : lire une requête SQL, choisir la bonne jointure, prévoir le nombre de lignes obtenues et calculer un résultat. Tu dois déjà connaître le modèle relationnel (tables, clés primaires, clés étrangères) et les requêtes simples avec SELECT, FROM et WHERE.
L'idée de la jointure ne se limite pas aux bases de données de gestion. Dans un logiciel de cartographie (SIG), une jointure attributaire consiste à rattacher à une couche des informations venant d'une table ou d'une autre couche, en s'appuyant sur les données attributaires.2 Le principe est le même qu'en SQL : deux ensembles de données, un champ commun qui sert de pont.2
Quiz
12 questions · correction immédiate · ton score reste sur ton appareil.
-
La jointure associe les lignes de deux tables grâce à un champ commun, ce qui permet de lire ensemble des données stockées séparément. Supprimer des doublons relève d'un autre mécanisme (
DISTINCT), et sauvegarder ou modifier la structure n'ont aucun rapport avec une requête de lecture. -
Après
ON, on écrit la condition d'appariement : une ligne de Client est reliée aux lignes de Commande qui portent le mêmeid_client. Ce n'est pas un filtre sur une valeur précise (ce serait unWHERE), et rien n'est créé dans la base. -
Chaque commande a un client correspondant : les commandes 101, 102, 103 et 104 donnent donc 4 lignes. David n'a passé aucune commande, il n'apparaît pas. Répondre 5 reviendrait à ajouter David sans commande : c'est le résultat d'un LEFT JOIN, pas d'un INNER JOIN, qui ne garde que les correspondances.
-
Le LEFT JOIN conserve toutes les lignes de la table placée à gauche (Client), avec la valeur vide NULL quand il n'y a pas de commande. Les deux INNER JOIN éliminent David. La dernière requête est invalide :
montantn'est pas une colonne de Client. -
Les 4 lignes de correspondance restent, et David s'ajoute avec un montant NULL : 4 + 1 = 5 lignes. Alice apparaît deux fois, car elle a deux commandes. Ne pas confondre avec 4 clients : le nombre de lignes dépend des commandes, pas seulement des clients.
-
Faux. Une requête
SELECTavec jointure ne fait que lire : elle construit un résultat temporaire. Les tables d'origine restent intactes, ce qui est justement l'intérêt du modèle relationnel, où chaque information n'est stockée qu'une fois. -
Les clients de Lyon sont Alice (50 + 30) et Chloé (80). Le calcul est 50 + 30 + 80 = 160 euros. Bruno (20 euros) habite Nantes : l'inclure donnerait 180, ce qui oublie le filtre sur la ville.
-
Il faut joindre les tables sur la clé, filtrer avec
WHERE montant > 40, puis éviter les doublons avecDISTINCT. Le résultat est Alice et Chloé. La deuxième requête utilise une colonne absente de Client ; la troisième n'a pas de conditionON; la quatrième met le filtre à la place de la condition de jointure. -
On relie la clé primaire de Client à la clé étrangère de Commande : ce sont deux champs qui portent les mêmes identifiants.
montantetvillene désignent pas la même chose et ne se correspondent pas ; les comparer ne donnerait aucun lien logique. -
Sans condition, chaque client est associé à chaque commande : 4 clients × 4 commandes = 16 lignes, dont beaucoup n'ont aucun sens. C'est le produit cartésien. Voilà pourquoi la clause
ON(ou une conditionWHEREéquivalente) est indispensable. -
Quand deux tables ont une colonne de même nom, le moteur ne sait pas laquelle choisir et signale une erreur. On préfixe donc par le nom de la table. Cela n'a aucun effet sur la vitesse : c'est une question de précision.
-
Ce type de jointure s'appuie sur les données attributaires : on choisit, de chaque côté, le champ clé dont les valeurs servent à apparier les lignes.2 C'est le même raisonnement qu'avec
id_clienten SQL. La couleur ou la taille d'un fichier ne contiennent aucune information d'appariement. Se baser sur la position relève d'une autre sorte de jointure, dite spatiale, et non attributaire.
Les questions qu'on se pose
Quelle différence entre ON et WHERE dans une jointure ?
ON décrit comment relier les deux tables (égalité entre clé primaire et clé étrangère). WHERE filtre ensuite les lignes du résultat selon un critère, par exemple ville = 'Lyon'. Pour un INNER JOIN, le résultat est le même si on déplace une condition de ON vers WHERE, mais avec un LEFT JOIN ce déplacement change vraiment les lignes obtenues. Garde l'habitude : le lien dans ON, le critère dans WHERE.
Comment choisir entre INNER JOIN et LEFT JOIN le jour du Bac ?
Lis la question. Si elle demande seulement les éléments qui ont une correspondance (clients ayant commandé), prends INNER JOIN. Si elle demande tous les éléments d'une table, même sans correspondance (tous les clients, avec ou sans commande), prends LEFT JOIN depuis la table dont tu veux tout conserver. Vérifie ensuite sur un petit exemple en comptant les lignes.
Sources
- Ressources Éduscol - Données massives et systèmes d'information de gestion (Terminale STMG), Éduscol - Ministère de l'Éducation nationale. Consulté le 11 novembre 2026.
- Tutoriel - Jointures de données avec QGIS et SQL, CNRS Passages. Consulté le 11 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.