Requete: afficher le meilleur etudiant de chaque classe
cs_emilie1981
Messages postés1Date d'inscriptionvendredi 30 mars 2012StatutMembreDernière intervention30 mars 2012
-
30 mars 2012 à 17:25
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 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..
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 20133 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