IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Problème avec la fonction AVG


Sujet :

SQL Procédural MySQL

  1. #1
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut Problème avec la fonction AVG
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof
    FROM etudiant e, notation nota, cours c,
    nomination nomi,prof p
    WHERE e.id_etudiant = nota.id_etudiant
    AND nota.id_cours = c.id_cours
    AND c.id_cours = nomi.id_cours
    AND nomi.id_prof = p.id_prof
    AND p.nom_prof = 'EVANS'
    AND p.prenom_prof = 'Bill'
    AND nota.note < select avg (nota.note);

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    deja tu ne precise pas ta table dans ton deuxieme select
    sinon le message d'erreur pourrait etre utile

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 74
    Points : 63
    Points
    63
    Par défaut
    tu ne peux pas mettre de select comme cela
    AND nota.note < select avg (nota.note);
    Un select est toujours suivi d'un FROM

    La réponse est juste
    AND nota.note < avg (nota.note);

  4. #4
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut
    Salut;
    J'ai déjà effectué AND nota.note < avg (nota.note); sans select, mais le résultat est une erreur 1111 'invaild use of group function'.
    A noter que lorque je fais AND nota.note < (select avg (nota.note) from notation); je n'ai pas de message d'erreur mais pas de résultat non plus.

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    et si tu precise le nom de la table dans le 2eme select?

  6. #6
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut
    Oui je précise la table du deuxième from corresepondant au deuxième select.

  7. #7
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Citation Envoyé par cirtey
    nota.note < (select avg (nota.note) from notation);
    C'est équivalent à "nota.note < nota.note" donc toujours faux, d'où l'absence de résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof
    FROM etudiant e
         JOIN notation nota ON e.id_etudiant = nota.id_etudiant
         JOIN cours c ON nota.id_cours = c.id_cours
         JOIN nomination nomi ON c.id_cours = nomi.id_cours
         JOIN prof p ON nomi.id_prof = p.id_prof
    WHERE p.nom_prof = 'EVANS' AND p.prenom_prof = 'Bill'
          AND nota.note < (SELECT avg(note) FROM notation);
    Les JOIN sont facultatifs mais je préfère pour des raisons de lisibilité.

    Par contre je suppose que la moyenne à utiliser est celle du prof concerné, ce qui implique d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nota.note < (SELECT avg(note) FROM notation WHERE id_cours=c.id_cours);

    Et pour simplifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT e.nom_etudiant, nota.note, p.nom_prof, p.prenom_prof
    FROM etudiant e
         JOIN notation nota USING (id_etudiant)
         JOIN nomination nomi USING (id_cours)
         JOIN prof p USING (id_prof)
    WHERE p.nom_prof = 'EVANS' AND p.prenom_prof = 'Bill'
          AND nota.note < (SELECT avg(note) FROM notation WHERE id_cours=nota.id_cours);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo