Bases des bases de données
La colonne x de la table R contient 4 lignes de valeurs 1, 1, 2, 3, et la colonne x de la table S contient 4 lignes de valeurs 1, 1, 2, 4. Combien de lignes renvoie SELECT * FROM R INNER JOIN S ON R.x = S.x ?
- A2 lignes
- B3 lignes
- C5 lignes
Afficher la réponse et l'explication
Réponse : C. 5 lignes
Dans une jointure, chaque combinaison de lignes qui satisfait la condition devient une ligne du résultat. Pour x = 1, toutes les combinaisons des 2 lignes de R et des 2 lignes de S satisfont la condition, ce qui donne 2 × 2 = 4 lignes ; pour x = 2, il y a 1 × 1 = 1 ligne. Le 3 de R et le 4 de S n'ont pas de partenaire et n'apparaissent donc pas dans la jointure interne. Le total est de 4 + 1 = 5 lignes. 2 lignes correspond au cas où l'on ne produirait qu'une ligne par valeur correspondante (1 et 2). 3 lignes correspond au cas où l'on vérifie seulement, pour chaque ligne de R, si S contient une valeur correspondante (une requête comme SELECT * FROM R WHERE x IN (SELECT x FROM S)). Le produit cartésien sans condition donnerait 4 × 4 = 16 lignes. Attention : des valeurs en double dans la colonne de jointure multiplient le nombre de lignes du résultat.
Continuer : 9 autres questions sur Bases des bases de données