Bonjour à tous
depuis une semaine je travaille sur la calcule de somme par matiere et par module mais je n'arrive pas a faire ce calcule
pourriez-vous m'aider
Merci d'avance
Version imprimable
Bonjour à tous
depuis une semaine je travaille sur la calcule de somme par matiere et par module mais je n'arrive pas a faire ce calcule
pourriez-vous m'aider
Merci d'avance
SAlut ,
On pourrait avoir quelques infos supplémentaires ? du style le calcul se fait en PHP ? directement par un SGBD ? un peu de code ?
merci
Merci RideKick de ta reponse rapide
se sont les tables de ma base de donne
Code:
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
26
27
28 Module([IdModule,NomModule) ______________1_______Formation ______________2_______Math _____________... ______... Matiere(IdMatiere,IdModule,Matiere_Nom,Coefficient) ___________1________2________Mat-x_______3 ___________2________2________Mat-y_______4 ___________3________2________Mat-z_______3 ___________4________2________Mat-u_______3 ___________...________...________..._________... ___________5________1________Frnacais_____4 ___________6________1________Englais______3 ___________7________1_______Espagnole_____3 etc.............. Etudiant(IdEtudiant,__Nom,___ Prénom______Niveau) ________1_________Beegees____Bernard______1erAn ________2_________Martin______Louis________2emeAn ________...__________...________...__________4emeAn etc.......... Note(IdNote_____idMatiere_____idetudiant_____Notes ) ______1___________1____________1__________12 ______2___________1____________2__________10 ______3___________1____________3__________12 ______? ___________?_____________?__________? etc.........
En éspérant que vous pourrez m'aiderCode:
1
2
3
4
5
6
7
8 ----------------|nom élève|----|nom élève 2|---|nom élève 3|---|nom élève 4|etc... ----------------------------------------------------------------------------- nom matiere 1|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc.. nom matiere 2|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc.. nom matiere 3|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc.. nom matiere 4|--|note élève 1|--|note élève 2|--|note élève 3|--|note élève 4|etc.. sommematiere |--|------------|--|------------|--|------------|--|------------|
Hummmm
Tu as pas la structure des tables comme ça je peux les creer de mon cote et m'appuyer dessus pour les requêtes ? (avec quelques données si possible lol)
Re-bonjour
en faite c'est la structure de ma base de donnee ,j'ai seulement mis des enregistrement ,quoiCitation:
Tu as pas la structure des tables comme ça je peux les creer de mon cote et m'appuyer dessus pour les requêtes ? (avec quelques données si possible lol)
je sollicite votre aide pour reussir le code
Merci d'avance
Bah justement , dans PHPMYADmin , tu fais "Exporter" et tu me fais passer le tout que je puisse de mon cote tester ce qu'on va tenter de coder ;)
Merci RideKick
voici le fichier de ma BDD
Merci encore de votre aide
lol , y'a pas de données dans "notes" :aie:
Bon le principe je pense :
Sélectionner pour chaque matière la somme des notes (ou la moyenne) , donc on va faire dans un premier temps un SELECT sur la table matiere avec une jointure sur la table note
BOn alors une petite requete sur ce que je viens de dire :
Code:
1
2
3
4
5 SELECT m.titre, SUM( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere GROUP BY m.idmatiere
LA on fait la somme , pour faire la moyenne suffit de mettre AVG a la place de SUM.
Remarque importante : le Group by est obligatoire sinon il te fais la somme de toute la table.
Merci RideKick
Ben j'ai testee la requete sous phpMyadmin et ca marche nikle:mouarf:
alors j'aimerai mettre aussi un peu de cooperation au niveau de php mais ben :aie:ca marche pas
Merci de votre aideCode:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <?php $host='*****'; $user='*****'; $pass=''; $dbase='*******'; // Connexion au serveur $connexion = mysql_connect($host,$user,$pass)or die ("Erreur de connexion"); mysql_select_db($dbase,$connexion)or die ("Erreur de connexion base"); $query=SELECT m.titre, SUM( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere GROUP BY m.idmatiere $result = mysql_query($query)or exit('Erreur: '.mysql_error()); ?> <table bgcolor="" width="50" border="1" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=""><div style="text-align: center"><b>Code_Note</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Code_Etudaint</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Nom_Etudiant</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Nom_Matiere</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Notes</b></div></td> </tr>'; <?php while ($row = mysql_fetch_array($result)) { ?> <tr> <td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td> <td><div align="center"><?php echo $row['idetudiant'] ?></div></td> <td><div align="center"> <?php echo $row['NomEtud'] ?></div></td> <td><div align="center"><?php echo $row['titre'] ?></div></td> <td><div align="center"> <?php echo$row['note'] ?></div></td> </tr> <?php } ?>
marchera beaucoup mieuxCode:
1
2
3
4 $query="SELECT m.titre, SUM( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere GROUP BY m.idmatiere";
:aie::aie::aie:
Code:Erreur: Champ 'NomEtud' inconnu dans field list
Merci d'avanceCode:
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
26
27
28
29
30
31
32
33
34
35
36
37 $connexion = mysql_connect($host,$user,$pass)or die ("Erreur de connexion"); mysql_select_db($dbase,$connexion)or die ("Erreur de connexion base"); $query="SELECT idnote,idetudiant,NomEtud,m.titre, SUM( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere GROUP BY m.idmatiere"; $result = mysql_query($query)or exit('Erreur: '.mysql_error()); ?> <table bgcolor="" width="50" border="1" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=""><div style="text-align: center"><b>Code_Note</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Code_Etudaint</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Nom_Etudiant</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Nom_Matiere</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Notes</b></div></td> </tr>'; <?php while ($row = mysql_fetch_array($result)) { ?> <tr> <td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td> <td><div align="center"><?php echo $row['idetudiant'] ?></div></td> <td><div align="center"> <?php echo $row['NomEtud'] ?></div></td> <td><div align="center"><?php echo $row['titre'] ?></div></td> <td><div align="center"> <?php echo$row['note'] ?></div></td> </tr> <?php } ?>
Normal tu essaie de recuperer des infos dans une table que tu n'as pas mentionné:
Code:
1
2
3
4 SELECT n.idnote,e.idetudiant,e.NomEtud,m.titre, SUM( n.note ) AS SommeNote FROM matiere m , etudiant e LEFT JOIN notes n ON n.idmatiere = m.idmatiere GROUP BY m.idmatiere";
mea culpa cette requete ne marche pas , mieux vaut proceder ainsi :
Code:
1
2
3
4
5
6 SELECT n.idnote, n.idetudiant, e.NomEtud, m.titre, SUM( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant GROUP BY m.idmatiere
Merci RideKick
mais SommeNote n'est pas afficher dans le tableau
Merci d'avance
Surement parce que tu ne l'as pas demandé ? :aie:
Il faudrait peut etre le rajouter dans ton html ?Code:
1
2
3
4
5
6
7 <tr> <td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td> <td><div align="center"><?php echo $row['idetudiant'] ?></div></td> <td><div align="center"> <?php echo $row['NomEtud'] ?></div></td> <td><div align="center"><?php echo $row['titre'] ?></div></td> <td><div align="center"> <?php echo$row['note'] ?></div></td> </tr>
Code:
1
2
3
4
5
6
7
8
9 <tr> <td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td> <td><div align="center"><?php echo $row['idetudiant'] ?></div></td> <td><div align="center"> <?php echo $row['NomEtud'] ?></div></td> <td><div align="center"><?php echo $row['titre'] ?></div></td> <td><div align="center"> <?php echo$row['note'] ?></div></td> <td><div align="center"> <?php echo$row['SommeNote'] ?></div></td> </tr>
Bonjour RideKick
Merci beaucoup de votre aide
j'aimerai calculer la moyenne des matiere par module
j'ai ajoutee la Fonction AVG mais ca marche pasCode:
1
2
3
4
5
6
7 $query="SELECT n.idnote,n.note, n.idetudiant, e.NomEtud, m.titre, AVG( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant GROUP BY m.idmatiere"; $result = mysql_query($query)or exit('Erreur: '.mysql_error());
Merci d'avance
Normal la tu calcule la moyenne par matiere .....
La bonne requête :
Code:
1
2
3
4
5
6
7 SELECT n.idnote, n.note, n.idetudiant, e.NomEtud, mo.nom AS NomModule, m.titre as NomMatiere, AVG( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY m.idmatiere
Merci RideKick
j'ai un erreur concernant le champ Notes:oops::oops:
Merci d'avance
Faudrait penser peut être a réfléchir tu crois pas ?
Apparemment titre n'existe pas .....donc si tu regarde dans la requête des modules , j'ai changé titre en NomMatiere, des fois c'est pas plus compliqué suffit de se donner la peine ....
Merci RideKick
:cry:desoleeCitation:
j'ai changé titre en NomMatiere
mais la moyenne n'est calcule j'ai la note quoi
Merci d'avance
Dans ce cas la faut changer le group by pour grouper par modules :
Code:
1
2
3
4
5
6 SELECT n.idnote, n.note, n.idetudiant, e.NomEtud, mo.nom AS NomModule, m.titre AS NomMatiere, AVG( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY mo.idmodule
Superbe RideKick
ca marche bien :king:
desolee RideKick je voudrais multiplier la coffecient fois la matiere puis claculer la moyenne par matiere dans un champ appare
puis la calculer de moyenne par module dans un champ appare
Merci RideKick de votre temps
Tu peux demander d'afficher le coefficient , ensuite tu peux faire le calcul via PHP
Salut
je viens d'inserer le nom du champ coefficient dans la requete mais j'ai trouvee que les noms des matiere sont disparues :aie::aie:
pourrais-tu RideKick m'expliquer l'erreurCode:
1
2
3
4
5
6
7 $query="SELECT n.idnote, n.note, n.idetudiant, e.NomEtud,coefficient,mo.nom AS NomModule, m.titre*coefficient AS NomMatiere, AVG( n.note ) AS SommeNote FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY mo.idmodule";
Merci d'avance
Normal :
il faut le faire separement sinon tu remplace le champs NomMatiere par la multiplication :Code:m.titre*coefficient AS NomMatiere
au passage vaut mieu multiplier une note par un coeficient que le nom de la matiere ?Code:(n.note*coefficient) AS Moy , m.titre AS NomMatiere
Salut RideKick
Voici le nouveau code
l'image ci-jointeCode:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 <?php // Connexion au serveur $connexion = mysql_connect($host,$user,$pass)or die ("Erreur de connexion"); mysql_select_db($dbase,$connexion)or die ("Erreur de connexion base"); $query="SELECT n.idnote, n.note, n.idetudiant, e.NomEtud,coefficient,mo.nom AS NomModule, (n.note*coefficient) AS Moy , m.titre AS NomMatiere FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY mo.idmodule"; $result = mysql_query($query)or exit('Erreur: '.mysql_error()); ?> <table bgcolor="" width="50" border="1" cellspacing="1" cellpadding="1"> <tr> <td bgcolor=""><div style="text-align: center"><b>Code_Note</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Code_Etudaint</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Nom_Etudiant</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Nom_Matiere</b></div></td> <td bgcolor=""><div style="text-align: center"><b>Coefficient</b></div></td> <td bgcolor=""><div style="text-align: center"><b>MoyenneMatiere</b></div></td> <td bgcolor=""><div style="text-align: center"><b>MoyenneModule</b></div></td> </tr>'; <?php while ($row = mysql_fetch_array($result)) { ?> <tr> <td bgcolor="#CCCCCC"> <?php echo $row["idnote"] ?> </td> <td><div align="center"><?php echo $row['idetudiant'] ?></div></td> <td><div align="center"> <?php echo $row['NomEtud'] ?></div></td> <td><div align="center"><?php echo $row['NomMatiere'] ?></div></td> <td><div align="center"><?php echo $row['coefficient'] ?></div></td> <td><div align="center"> <?php echo$row['note'] ?></div></td> <td><div align="center"> <?php echo$row['Moy'] ?></div></td> </tr> <?php } ?>
Merci de votre aide
Bonjour à tous
bonjour RideKick
ben,jai des probleme au niveau de calcule,je devrais calculer la somme des matiere de chauqe Module apres je clacule la moyenne
et d'apres le tableau en haut ,le calcul n'est pas correct
Merci de votre aide
Ce n'est jamais qu'un problème de mathématiques , tu devrais d'abord détailler le calcul sur une feuille , une fois celui ci valide l'appliquer a ton code !
Merci RideKick
je suis ravie de votre aide :P
-- Moyenne par MatièreCitation:
Envoyé par RideKick
ben le probleme se situe au niveau de ma requete :aie::aie:toujours je trouve pas la bonne resultatCode:SUM(Note * Coeff)/SUM(Coeff) AS Moyenne
Merci d'avance
?Code:(SUM(Note * Coeff)/SUM(Coeff)) AS Moyenne
:aie::aie:
mais c'est juste j'aimerai savoir est-ce que la formule est correcte parcque je viens d'integrer cette formule dans ma requete
Code:
1
2 SUM(Note * Coeff)/SUM(Coeff) AS Moyenne
Merci d'avanceCode:
1
2
3
4
5
6
7
8 SELECT n.idnote, n.note, n.idetudiant, e.NomEtud,coefficient,mo.nom AS NomModule, SUM(n.note*coefficient)/SUM(coefficient) AS Moyenne , m.titre AS NomMatiere FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY mo.idmodule
La formule est juste :king:
Merci
;)Citation:
Envoyé par RideKick
c'est juste la formule de claculer Moyenne par Matière
je souhaiterai ajouter aussi la formule de calculer Moyenne par Moduleddans la meme requete :oops:
Merci d'avance
Citation:
Envoyé par RideKick
Code:
1
2
3
4
5
6
7
8
9
10 ------Moyenne par Matière----------- SELECT n.idnote, n.note, n.idetudiant, e.NomEtud,coefficient,mo.nom AS NomModule, SUM(n.note*coefficient)/SUM(coefficient) AS Moyenne , m.titre AS NomMatiere FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY mo.idmodule
alors je ferais comme ca nonCode:
1
2
3
4
5
6
7
8 -- Moyenne par Module SELECT nom AS NomModule,SUM(Note * Coeff)/SUM(Coeff) AS Moyenne FROM Note LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY mo.idmodule
Merc d'avance
Si tu groupe les 2 par idModule c'est la même requête ...
cette requete est-elle correcteCitation:
Envoyé par RideKick
Merci d'avanceCode:
1
2
3
4
5
6
7
8
9
10 ------Moyenne par Matière----------- SELECT n.idnote, n.note, n.idetudiant, e.NomEtud,coefficient,mo.nom AS NomModule, SUM(n.note*coefficient)/SUM(coefficient) AS Moyenne , m.titre AS NomMatiere FROM matiere m LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY m.idmatiere
Mieux oui ...
Merci RideKick
:king:Citation:
Envoyé par RideKick
mais RideKick est-ce la requete de caclue Moyenne par module est correcte:oops:
Merci d'avanceCode:
1
2
3
4
5
6
7
8 -- Moyenne par Module SELECT nom AS NomModule,SUM(Note * Coeff)/SUM(Coeff) AS Moyenne FROM Note LEFT JOIN notes n ON n.idmatiere = m.idmatiere LEFT JOIN etudiant e ON e.idetudiant = n.idetudiant LEFT JOIN module mo ON m.idmodule = mo.idmodule GROUP BY mo.idmodule