Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2742 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  le plus grand d'une liste (trois tables en jeu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

le plus grand d'une liste (trois tables en jeu)

n°1915466
bwarin
Posté le 16-08-2009 à 00:07:12  profilanswer
 

bonjour à tous,
 
j'ai une table étudiant
une table matière
les étudiants passent des examens (un ou plusieurs pour les matières)
 
Paul a passé un examen de SQL : le 15.11.2008, il a eu 11/20
Paul a passé un examen de SQL : le 20.01.2009 il a eu 15/20
et ainsi de suite
 
table étudiant : id étudiant, nom, prenom
table matiere : id matière, désignation
table examen : id étudiant, id matiere, date, note
 
 
Peut-on écrire une requete SQL qui me donne la liste des étudiants avec pour chacun d'entre eux uniquement la date et la note du dernier examen passé.
 
J'ai essayé :
 
select etu_nom, exam_date, exam_note
from etudiant e1, examen ex1
where etu_id=exam_id
      and exam_date =
          (select max(ex2.exam_date)
           from etudiant e2, examen ex2
           where e1.etu_id=e2.etu_id)  
group by etu_mysql
 
ca marche pas vraiment : aucun enregistrement retourné (la base est bien rempli (-: j'ai vérifié
Quelqu'un peut me dépanner ?
 
 
 
Merci à tous

mood
Publicité
Posté le 16-08-2009 à 00:07:12  profilanswer
 

n°1915493
pataluc
Posté le 16-08-2009 à 12:46:29  profilanswer
 

déja avec un join c'est mieux, et du coup ca donne

Code :
  1. SELECT etu_nom, max(exam_date), exam_note
  2. FROM examen ex1
  3. INNER JOIN etudiant e1 ON e1.etu_id=ex1.exam_id
  4. GROUP BY etu_nom

Message cité 1 fois
Message édité par pataluc le 16-08-2009 à 12:46:39
n°1915527
bwarin
Posté le 16-08-2009 à 19:42:20  profilanswer
 

pataluc a écrit :

déja avec un join c'est mieux, et du coup ca donne

Code :
  1. SELECT etu_nom, max(exam_date), exam_note
  2. FROM examen ex1
  3. INNER JOIN etudiant e1 ON e1.etu_id=ex1.exam_id
  4. GROUP BY etu_nom



 
Merci pataluc pour ta proposition. je l'ai essayé mais le souci c'est que la note obtenue ne sera pas forcément celle de l'étudiant.
Je crois avoir trouvé : j'ai fait un select avec une jointure comme toi (a peu près) puis pour éviter le souci de correspondance note/étudiant j'ai fait un Having avec une clause Select à l'intérieur
 
Voilà la solution que j'ai trouvée, en fait il ne s'agissait pas d'examen mais d'étudiant inscrits dans une spécialité de licence pro à une date donnée (comme c'est compliqué j'ai expliqué le pb + simple mais équivalent avec examen  (désolé). ETU_SPE correspond à examen, etu_spe_spe_id correspondrait à la note
 
Voilà ma soluce :
SELECT etu_nom, ETU_SPE_spe_id, etu_spe_date_dbt
FROM etudiant e1, etu_spe es1
WHERE etu_mysql = `ETU_SPE_etu_id`
GROUP BY etu_mysql, etu_spe_spe_id
HAVING etu_spe_date_dbt = (
SELECT max( es2.etu_spe_date_dbt )
FROM etudiant e2, etu_spe es2
WHERE e1.etu_mysql = e2.etu_mysql
AND e2.etu_mysql = es2.etu_spe_etu_id )
LIMIT 0 , 60  
 
Merci encore
 

n°1915589
pataluc
Posté le 17-08-2009 à 08:56:46  profilanswer
 

ben écoute, chez moi ca marche, mais le petit jeu de données que je me suis créé pour tester (3 etud, 3 matiere, 4 exam) n'est peut être pas suffisamment représentatif...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  le plus grand d'une liste (trois tables en jeu)

 

Sujets relatifs
Suppression d'un maillon d'une liste chainéeUn tableau de liste chaînée
[ACCESS] Accèder à une liste déroulanteObtenir la liste des appels entre deux break points
[EXCEL] Liste clients -> recherche géographiquePL/SQL : utilisation de variable pour liste de valeur dans requête
PL/SQL : Problème d'apostophes dans génération de liste de valeursRequete php sur 2 tables
[macro word]Ajouter automatiquement des balises à une liste de liens[VBA] liste deroulante dans ComboBox : comment creer liste ??
Plus de sujets relatifs à : le plus grand d'une liste (trois tables en jeu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR