Adloun

Combien de lignes rend une jointure ?

Exercice d'entraînement · niveau 2 · mathématiques appliquées (ECG 2e année), chapitre 13 — Bases de données et travaux pratiques · Jointure

Énoncé

La table client contient trois lignes, d'identifiants , et . La table commande en contient cinq, dont les valeurs de client_id sont, dans l'ordre, , , , et . Combien de lignes rend la jointure interne des deux tables sur l'égalité de commande.client_id et de client.id ? Quelles lignes disparaissent, et pourquoi ?

Corrigé

La requête.


SELECT * FROM commande
INNER JOIN client ON commande.client_id = client.id;

Le principe. INNER JOIN ne conserve que les couples de lignes qui s'apparient des deux côtés. On examine donc chaque commande, et l'on cherche si un client porte l'identifiant demandé.

Le décompte.

client_id de la commandeclient correspondantligne produite
client oui
client oui
client oui
client oui
aucunnon

La jointure rend donc quatre lignes.

Ce qui disparaît, et pourquoi. Deux choses, pour deux raisons opposées.

L'erreur d'interprétation à éviter. En lisant le résultat, on ne compte que deux clients distincts et quatre commandes. Conclure « il n'y a que deux clients » ou « il n'y a que quatre commandes » serait faux dans les deux cas. Une jointure interne ne montre que l'intersection ; pour compter les clients, on interroge la table client seule.

Un dernier point. Le client apparaît trois fois dans le résultat, une fois par commande : la jointure duplique les lignes du côté qui n'a qu'un exemplaire. Ce n'est pas une anomalie, c'est la structure même du recollement.

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.