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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème avec la fonction avg en double jointure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec la fonction avg en double jointure

n°1551444
teycir
Posté le 30-04-2007 à 13:58:16  profilanswer
 

Bonjour;
Je suis sur Mysql server 5.0, j'utilise Mysql query browser.
J'ai selectionné les notes données aux étudiants par un prof.
Je souhaite maintenant afficher uniquement les notes inférieures à la note moyenne.
J'ai rajouté une dernière ligne pour n'afficher que les notes inférieures à la moyenne mais il y a une erreur de syntaxe dans cette dernière ligne.
Trouvez-vous la solutions? Merci.
Voici le code :
Code :

Code :
  1. SELECT e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof
  2. FROM etudiant e, notation nota, cours c, nomination nomi,prof p
  3. WHERE e.id_etudiant = nota.id_etudiant
  4. AND nota.id_cours = c.id_cours
  5. AND c.id_cours = nomi.id_cours
  6. AND nomi.id_prof = p.id_prof
  7. AND p.nom_prof = 'EVANS'
  8. AND p.prenom_prof = 'Bill'
  9. AND nota.note < SELECT avg (nota.note);

mood
Publicité
Posté le 30-04-2007 à 13:58:16  profilanswer
 

n°1551466
LePhasme
Les Belges domineront le monde
Posté le 30-04-2007 à 14:17:15  profilanswer
 

Le select imbriqué est incorrect, tu dois remettre le "from notation nota" et les jointures si elles sont nécéssaires.

n°1551517
teycir
Posté le 30-04-2007 à 15:00:04  profilanswer
 

Salut;
j'ai déjà testé AND nota.note < (select avg (nota.note) from notation); dans ce cas je n'ai pas de message d'erreur mais pas de résultat non plus.

n°1551519
LePhasme
Les Belges domineront le monde
Posté le 30-04-2007 à 15:12:58  profilanswer
 

N'oublie pas que  
 
select avg (nota.note) from notation  
 
te donne la moyenne de toutes les notes sans distinction du cours/professeur.
Et vérifie que t'as bien des étudiants avec une note inférieure à cette moyenne.

n°1551535
teycir
Posté le 30-04-2007 à 15:52:35  profilanswer
 

LePhasme a écrit :

N'oublie pas que  
 
select avg (nota.note) from notation  
 
te donne la moyenne de toutes les notes sans distinction du cours/professeur.
Et vérifie que t'as bien des étudiants avec une note inférieure à cette moyenne.


 
Oui il y a des étudiants qui ont une note inférieure à la moyenne.
 
J'ai essayé cela :

Code :
  1. SELECT e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof
  2. FROM etudiant e, notation nota, cours c,
  3. nomination nomi,prof p
  4. WHERE e.id_etudiant = nota.id_etudiant
  5. AND nota.id_cours = c.id_cours
  6. AND c.id_cours = nomi.id_cours
  7. AND nomi.id_prof = p.id_prof
  8. AND p.nom_prof = 'EVANS'
  9. AND p.prenom_prof = 'Bill'
  10. AND
  11. (
  12.     nota.note < (select avg (nota.note) from notation nota, cours c,
  13.     nomination nomi,prof p where  nota.id_cours = c.id_cours
  14.     AND c.id_cours = nomi.id_cours
  15.     AND nomi.id_prof = p.id_prof
  16.     AND p.nom_prof = 'EVANS'
  17.     AND p.prenom_prof = 'Bill')
  18. );

n°1551540
LePhasme
Les Belges domineront le monde
Posté le 30-04-2007 à 16:07:43  profilanswer
 

Vérifie ce que renvoit  

Code :
  1. SELECT avg (nota.note) FROM notation nota, cours c,
  2.    nomination nomi,prof p WHERE  nota.id_cours = c.id_cours
  3.    AND c.id_cours = nomi.id_cours
  4.    AND nomi.id_prof = p.id_prof
  5.    AND p.nom_prof = 'EVANS'
  6.    AND p.prenom_prof = 'Bill');

 

n°1551549
teycir
Posté le 30-04-2007 à 16:24:51  profilanswer
 

LePhasme a écrit :

Vérifie ce que renvoit  

Code :
  1. SELECT avg (nota.note) FROM notation nota, cours c,
  2.    nomination nomi,prof p WHERE  nota.id_cours = c.id_cours
  3.    AND c.id_cours = nomi.id_cours
  4.    AND nomi.id_prof = p.id_prof
  5.    AND p.nom_prof = 'EVANS'
  6.    AND p.prenom_prof = 'Bill');



 
Salut, ton dernier code renvoie une error 1064, lorsqu'on enlève la dernière parenthèse et qu'on recomile on obtient la moyenne soit : 10.2804.
 
A noter que ta remarque précédente était pertinente.
J'ai refait le code :

Code :
  1. SELECT e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof
  2. FROM etudiant e, notation nota, cours c,
  3. nomination nomi, prof p
  4. WHERE e.id_etudiant = nota.id_etudiant
  5. AND nota.id_cours = c.id_cours
  6. AND c.id_cours = nomi.id_cours
  7. AND nomi.id_prof = p.id_prof
  8. AND p.nom_prof = 'EVANS'
  9. AND p.prenom_prof = 'Bill'
  10. AND
  11. (
  12.     nota.note <
  13.     (   
  14.         select avg (nota.note)
  15.         FROM notation nota, cours c,
  16.         nomination nomi, prof p
  17.         WHERE  nota.id_cours = c.id_cours
  18.         AND c.id_cours = nomi.id_cours
  19.         AND nomi.id_prof = p.id_prof
  20.         AND p.nom_prof = 'EVANS'
  21.         AND p.prenom_prof = 'Bill'
  22.     )
  23. );


Et là j'obtiens que des notes < 10,2.
Merci.

n°1552216
MagicBuzz
Posté le 02-05-2007 à 12:05:32  profilanswer
 

teycir a écrit :


Et là j'obtiens que des notes < 10,2.
Merci.


je pense qu'il y a plus simple en ajoutant une simple jointure et en utilisant la clause HAVING.
 
A tester :

Code :
  1. SELECT e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof, avg(moy.note) moyenne
  2. FROM etudiant e, notation nota, cours c, nomination nomi, prof p, notation moy
  3. WHERE e.id_etudiant = nota.id_etudiant
  4. AND nota.id_cours = c.id_cours
  5. AND c.id_cours = nomi.id_cours
  6. AND nomi.id_prof = p.id_prof
  7. AND p.nom_prof = 'EVANS'
  8. AND p.prenom_prof = 'Bill'
  9. AND moy.id_cours = nota.id_cours
  10. GROUP BY e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof
  11. HAVING nota.note < avg(moy.note);


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

  Problème avec la fonction avg en double jointure

 

Sujets relatifs
[Javascript] Rendre une fonction compatible avec FirefoxProblème de Process.Start depuis une page ASPX
[resolu] probleme pour rentrer dans un ifAppeler une fonction python dans un contexte java
Probleme de signature en htmlproblème de décimale
problème avec formulaire et code javascriptProblème avec l'encodage UTF-8 [de l'aide svp]
Probleme de mise en ligne apres upload des htmlProbleme avec un JavaScript de Popup
Plus de sujets relatifs à : Problème avec la fonction avg en double jointure


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