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

Langage SQL Discussion :

Problème requête de calcul de moyenne


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut Problème requête de calcul de moyenne
    Bonjour,

    Je réalise un requete avec jointure pour faire la moyenne de note avec des coefficients, mais ma requete n'a pas l'air de donner le bon résultat.

    J'ai deux tables : une table note (dans laquelle j'ai ma moyenne par module) et une table module(dans laquelle j'ai mes coefficients de mes modules) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE TABLE modules
    (
    NomModule VARCHAR(30) NOT NULL,
    NomFormation VARCHAR(20) NOT NULL,
    DateFormation INT NOT NULL,
    CoeffModule INT NOT NULL,
    NumSemestre VARCHAR(5) NOT NULL,
    PRIMARY KEY(NomModule,NomFormation,DateFormation,NumSemestre),
    FOREIGN KEY (NomFormation,DateFormation) REFERENCES formation(NomFormation,DateFormation)
    );
     
    CREATE TABLE note
    (
    IdEtudiant VARCHAR(20) NOT NULL,
    NomModule VARCHAR(20) NOT NULL,
    NomFormation VARCHAR(20) NOT NULL,
    DateFormation INT NOT NULL,
    NumSemestre VARCHAR(5) NOT NULL,
    PRIMARY KEY(IdEtudiant,NomModule,NomFormation,DateFormation,NumSemestre),
    FOREIGN KEY (IdEtudiant) REFERENCES etudiant(IdEtudiant),
    FOREIGN KEY (NomModule,NomFormation,DateFormation,NumSemestre) REFERENCES modules(NomModule,NomFormation,DateFormation,NumSemestre),
    NoteExam INT NOT NULL,
    NoteTp INT DEFAULT NULL,
    moy float 
    );
    Ce que je veux faire, c'est faire la moyenne générale de l'ensemble des modules en associant les coefficients au bon module.

    Voilà ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sqlmoygenerale = "SELECT round(SUM(note.moy*modules.CoeffModule)/SUM(modules.CoeffModule),2)
     FROM note,modules 
     WHERE note.NomFormation=modules.NomFormation
     AND   note.DateFormation=modules.DateFormation
     AND   note.NumSemestre=modules.NumSemestre
     AND   note.NomModule=modules.NomModule
     AND IdEtudiant LIKE '%$etudiantId%'";
    Si qq voit l'erreur; merci.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Une piste de recherche : Y a-t-il une seule note ou plusieurs par module ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Points : 224
    Points
    224
    Par défaut
    Non, une seule moyenne par module

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,
    ma requete n'a pas l'air de donner le bon résultat
    Qu'entendez vous par là? Un exemple peut etre?
    La requête semble correcte, bien que la syntaxe pour vos jointures soit un peu obsolète.
    Essayez peut être en passant votre moyenne en type NUMBER, j'ai pu lire certains posts mentionnant des soucis de ce type sur les type FLOAT, apparemment dû au fait que le resultat peut être renvoyé en notation scientifique.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/06/2010, 15h34
  2. Problème algo [calcul de moyenne]
    Par Nathan66 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 05/10/2008, 08h15
  3. Calculer des moyennes dans les requêtes
    Par said2n dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 02/07/2008, 13h12
  4. [Debutant]Problème Requête et Calcul
    Par ghan77 dans le forum Bases de données
    Réponses: 9
    Dernier message: 04/01/2006, 14h47
  5. Problème dans le calcul des normales moyennes,
    Par MaxPayne dans le forum OpenGL
    Réponses: 1
    Dernier message: 12/04/2005, 17h50

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