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

PHP & Base de données Discussion :

moyenne des étudiants


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Etudiant informatique
    Inscrit en
    Mars 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 86
    Par défaut moyenne des étudiants
    Salut tout le monde, je veux calculer la moyenne de mes étudiants, les notes son stockés dans une base de données, lorsque je lance cette requette MySql:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT userid,firstname,lastname,courseid,fullname,shortname,category,name,finalgrade
    FROM mdl_211user,mdl_211course,mdl_211course_categories,mdl_211grade_grades,mdl_211grade_items
    WHERE mdl_211grade_grades.usermodified IS NULL
    AND mdl_211grade_grades.itemid=mdl_211grade_items.id
    AND mdl_211grade_items.courseid=mdl_211course.id
    AND mdl_211course.category=mdl_211course_categories.id
    AND mdl_211user.id=mdl_211grade_grades.userid;
    elle donne le résultat suivant:
    Nom : resultat de la requette.PNG
Affichages : 486
Taille : 64,4 Ko
    je veut tout d'abord calculer pour chaque étudiant la moyenne par catégorie de cours, comme le montre la table, lorsque j'ai le meme identifiant de l'utilisateur (userid) et le même identifiant de la catégorie de cours (category) (ou le même nom de catégorie (name) je fais l'AVG des notes (finalgrade).
    par exemple, comme l'illustre le dessin (ce qui marqué en jaune), lorsque l'identifiant de l'étudiant est 12 est le nom de la catégorie est programmation je fais AVG (12.33,13.00).
    je veut faire ce calcul pour tout les étudiant ,en php bien sur, je veux avoir pour chaque étudiant les moyennes de chaque catégorie (programmation et langue étrangère dans l'exemple) j'arrive pas à le faire, est ce qu'il y a quelqu'un qui peut m'aider un peut ou m'inspirer.
    Aprés, dans une étape suivante, je cherche à calculer la moyenne des catégories (déjà calculées) c'est à dire pour chaque étudiant faire la moyenne de tout les catégories présente dans la base de données (dans l'exemple AVG (langue étrangère,programmation)
    Je sais que c'est très compliqué mais malheureusement je trouve pa de solution j'ai vraiment besoin d'aide car j'ai oas trop de temps

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Salam , si je peut me permettre:
    1. y'a des redondances dans la sélection des champs , je crois qu'il faut limité l'affichage aux champs important ( voir un exemple de document ou bulletin de note selon le document existant).
    2. ta requête n'est pas optimisée.
    3. pour gagner du temps faut passé par des requêtes préparées.
    4. pour la moyenne y'a le groupe by et avg.....

    http://sqlpro.developpez.com/cours/sqlaz/fonctions/

  3. #3
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Bonjour,

    Un GROUP BY et un AVG pour faire tout ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT userid,firstname,lastname,courseid,fullname,shortname,category,name,AVG(finalgrade)
    FROM mdl_211user,mdl_211course,mdl_211course_categories,mdl_211grade_grades,mdl_211grade_items
    WHERE mdl_211grade_grades.usermodified IS NULL
    AND mdl_211grade_grades.itemid=mdl_211grade_items.id
    AND mdl_211grade_items.courseid=mdl_211course.id
    AND mdl_211course.category=mdl_211course_categories.id
    AND mdl_211user.id=mdl_211grade_grades.userid
    GROUP BY userid, category
    Comme le dit redoran, ta requête n'est pas top (peut-être trop d'info), et surtout mal jointe... Regarde du coté du INNER JOIN ou du LEFT JOIN.

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re ; Nowwis
    Bonjour,

    Un GROUP BY et un AVG pour faire tout ça :
    c'était une orientation pour le calcule des statistiques d’où le lien proposé.
    sa requête n'est pas clair autrement mal structurée , donc il faut l'optimisé....
    peut étre faut passé par les vues ou les vue matérialisée pour faire des calcules intermédiaires.

  5. #5
    Membre confirmé
    Femme Profil pro
    Etudiant informatique
    Inscrit en
    Mars 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 86
    Par défaut la moyenne des étudiants
    Bon cette requette me donne seulement les champs important qui sont: l'identifiant de l'étudiant qui est userid, l'identifiant de la catégorie qui est category et la note du cours qui est finalgrade.
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT userid, category, finalgrade
    FROM mdl_211course_categories, mdl_211grade_grades, mdl_211grade_items, mdl_211course
    WHERE mdl_211grade_grades.usermodified IS NULL 
    AND mdl_211grade_grades.itemid = mdl_211grade_items.id
    AND mdl_211grade_items.courseid = mdl_211course.id
    AND mdl_211course.category = mdl_211course_categories.id
    Ce qui permet l'affichage du resultat suivant:
    Nom : nouvelle requette.PNG
Affichages : 389
Taille : 15,0 Ko
    Donc le traitement que je veut faire c'est calculer l'AVG(finalgrade) pour chaque étudiant par catégorie c'est à dire lorsque j'ai le meme userid et le meme cetegoryb faire AVG(finalgrade)
    Je pense que c'est plus visible comme ça
    pleeeaaase heelp

  6. #6
    Membre confirmé
    Femme Profil pro
    Etudiant informatique
    Inscrit en
    Mars 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 86
    Par défaut affichage du resultat
    wiii merci bien, ça bien marché votre solution 'Nowwis' mais je trouve un problème dans l'affichage de ces données
    voila cette requette permet d'extraire tous les informations dont j'ai besoin
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT userid, firstname, lastname,email, category, name, AVG( finalgrade ) 
    FROM mdl_211course_categories, mdl_211grade_grades, mdl_211grade_items, mdl_211course, mdl_211user
    WHERE mdl_211grade_grades.usermodified IS NULL 
    AND mdl_211grade_grades.itemid = mdl_211grade_items.id
    AND mdl_211grade_items.courseid = mdl_211course.id
    AND mdl_211course.category = mdl_211course_categories.id
    AND mdl_211grade_grades.userid = mdl_211user.id
    GROUP BY userid, category;
    et cette requette donne le résultat suivant:
    Nom : Le résultat.PNG
Affichages : 402
Taille : 50,5 Ko
    mais j'arrive pas à trouver une façon parfaite avec php pour les afficher sous forme de bulletin de note , j'arrive à des affichage bizarre
    voila ce que je reçoit:
    Nom : Résultat php.PNG
Affichages : 427
Taille : 34,7 Ko
    Ce qui est en rouge c'est la moyenne de la catégorie programmation et ce qui est en bleu c'est la moyenne de la catégorie Langue étrangère pour le meme étudiant, mai je veux que les moyennes se mettent dans des colonnes séparés mais j'arrive pas à le faire
    y a quelqu'un qui peut m'aider, je veut avoir ce genre d'affichage mais j'arrive pas

Discussions similaires

  1. Calculer la moyenne des étudiants
    Par yawra dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/04/2012, 16h20
  2. calculer la moyenne des étudiants
    Par zora700 dans le forum C++
    Réponses: 5
    Dernier message: 15/03/2012, 07h10
  3. Moyenne des champs non vide dans un état
    Par loutsky dans le forum Access
    Réponses: 4
    Dernier message: 05/04/2006, 17h26
  4. Tri par la moyenne des valeurs de champs ?
    Par rozwel dans le forum Requêtes
    Réponses: 8
    Dernier message: 28/01/2005, 18h35
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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