TP papier : première requête agrégat

Cette formation présente les fondements des bases de données relationnelles et enseigne l’écriture de requêtes SQL.

Modérateurs : Équipe sillages.info, Benjamin NGUYEN

Astrid Allemandou
Messages : 12
Enregistré le : sam. 22 déc. 2018 15:21

TP papier : première requête agrégat

Messagepar Astrid Allemandou » mer. 2 janv. 2019 18:40

Bonjour,

Pour la première question de la partie "Requêtes agrégats" du TP papier, j'aimerais savoir si on pouvait :

1) Ecrire GROUP BY E.NE seulement au lieu de GROUP BY E.NE, E.NOM, E.PRENOM ?

2) Ne pas écrire "DISTINCT" dans HAVING COUNT (DISTINCT NC), puisqu'il n'y a déjà qu'une seule ligne par cours normalement ?

Cécile POISVERT
Messages : 3
Enregistré le : lun. 4 nov. 2019 12:19

Re: TP papier : première requête agrégat

Messagepar Cécile POISVERT » mer. 6 nov. 2019 10:21

Bonjour,

j'ai la même interrogation que la première question de la demoiselle...

Pourriez-vous nous dire pourquoi il faut rajouter la close GROUP BY sur NOM et PRENOM s'il vous plait?

Merci!

Benjamin NGUYEN
Messages : 15
Enregistré le : ven. 9 juin 2017 09:59

Re: TP papier : première requête agrégat

Messagepar Benjamin NGUYEN » mer. 6 nov. 2019 14:39

Bonjour,

La syntaxe de SQL impose que si on utilise une clause GROUP BY, alors dans la clause SELECT on doit mettre :

- des attributs apparaissant dans la clause GROUP BY
- des fonctions d'agrégation

Si on met dans la clause SELECT NE, NOM, PRENOM et seulement GROUP BY NE, la requête n'est pas correcte, même si dans les faits, la plupart des SGBD retourneront la bonne valeur.

Le problème vient du fait que NE est une clé primaire ici, ce qui résout la question de savoir quelle valeur de NOM et PRENOM correspondent à un NE donné, mais considérez par exemple le cas où on veut faire SELECT NE, NOM, PRENOM et GROUP BY NOM, PRENOM. Quelle valeur de NE faut-il retourner ? Si dans la base (NOM, PRENOM) est une clé, alors pas de soucis, il y aura juste 1 NE pour un coupe (NOM, PRENOM) donné. Mais si il y a plusieurs personnes avec le même couple (NOM, PRENOM) alors le SGBD ne saura pas quelle valeur de NE mettre.

Pour ce qui est de la question du distinct, en fait la question qu'on pose est un peu ambigüe : si on a suivi deux fois le même cours mais à des années différentes, est ce qu'il s'agit d'un ou 2 cours ? En mettant DISTINCT on ne comptera ce cours qu'une seule fois. Si on ne le met pas, on le comptera deux fois. Mais dans tous les cas, il peut y avoir 2 lignes par cours, si un cours a été suivi lors de plusieurs années.

Cordialement,

BN

Cécile POISVERT
Messages : 3
Enregistré le : lun. 4 nov. 2019 12:19

Re: TP papier : première requête agrégat

Messagepar Cécile POISVERT » jeu. 7 nov. 2019 12:26

Merci beaucoup de votre réponse!


Retourner vers « Bases de données relationnelles »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité