Requete: afficher le meilleur etudiant de chaque classe

cs_emilie1981 Messages postés 1 Date d'inscription vendredi 30 mars 2012 Statut Membre Dernière intervention 30 mars 2012 - 30 mars 2012 à 17:25
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 - 25 avril 2012 à 00:40
Bonjour a tous,

J ai un probleme avec une requete toute simple, je pense.
Je n ai qu'une table ETUDIANT(Id,Nom,Prenom,Classe,note)
Je souhaite afficher pour chaque classe l'etudiant ayant la meilleure note.

J'ai tenté 2 requetes:
SELECT classe,nom, prenom, MAX(note) AS maxnote FROM ETUDIANT GROUP BY classe;

-->ca m affiche bien la meilleure note mais ce n'est pas le bon élève en face....

SELECT classe, nom, prenom, MAX(note) AS maxnote FROM ETUDIANT GROUP BY classe HAVING note=MAX(note);

-->et cette fois, si 2 etudiants de classe differente ont la meme note, il n'y en a qu'un seul qui s'affiche..


Merci pour votre aide..:-)

1 réponse

tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
25 avril 2012 à 00:40
Bonjour,

Tu essaies d'exécuter 2 opérations dans la même requête or il faut :
- 1 sous requête (A) pour trouver la meilleure note par classe
- 1 requête principale pour trouver le ou les étudiants ayant cette meilleure note par classe

Ces 2 requêtes peuvent bien sûre être combinées en une seule :
Select B.* FROM
(Select Classe, max(Note) as Note from Etudiant group by Classe) A -- Meilleure note par classe
INNER JOIN Etudiant B -- Toute la table étudiant
on A.classe B.Classe and A.Note B.Note



Yann
0
Rejoignez-nous