calcul de moyenne sur une table sql [ résolu ] - PHP - Programmation
Marsh Posté le 07-01-2003 à 23:51:31
http://www.mysql.com/doc/en/Group_by_functions.html
Marsh Posté le 08-01-2003 à 00:07:00
je suis allé sur ce site, c'est interressant en effet, j'ai vu la commande AVG() qui permettrait de faire une moyenne si j'ai bien compris, elle peux me servir dans ce cas et si oui il faudrait me donner un exemple concret pour que je comprenne, merci.
Marsh Posté le 08-01-2003 à 23:22:55
$calcul_moyenne = mysql_query("SELECT nom, avg(result_classe) from $table GROUP BY nom ORDER BY avg(result_classe)" );
while ($classement = mysql_fetch_row($calcul_moyenne))
{
echo "
<font face='Arial' size='5'>
<center>
<TABLE CELLPADDING=4 CELLSPACING=0 width='60%'>
<TR BGCOLOR='#454545'>
<TD>
<b><FONT COLOR='#5BFF79'>$classement</FONT></b></font>
</TD>
</TR>
</table>
</center>
</font>
";
}
--------------------------------
voilà j'ai essayé de mettre en pratique, j'ai donc le premier champs qui s'appelle "nom" et celui ou il y a les notes qui s'appelle "result_classe".
Ensuite je me suis dit que j'allait faire une boucle avec fetch_row pour tous les afficher, mais je me retrouve avec une erreure:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource
ensuite j'ai essayé avec fetch_array mais c'est pareil.
Après ça j'ai essayé d'afficher avec $classement[0], mais pas de changement.
C'est juste ce que j'ai écrit ou alors il y a une boulette?
En tout cas je n'ai rien trouvé sur le détail de cette fonction AVG() qui m'a l'air bien pratique
Marsh Posté le 08-01-2003 à 23:42:18
mecano1 a écrit : $calcul_moyenne = mysql_query("SELECT nom, avg(result_classe) from $table GROUP BY nom ORDER BY avg(result_classe)" ); |
Tu ne peux utiliser une fonction d'agrégat que dans la clause SELECT, d'où l'erreur que tu avais je pense. Essaie ça :
mysql_query("SELECT nom, avg(result_classe) AS moyenne from $table GROUP BY nom ORDER BY moyenne" ); |
Marsh Posté le 09-01-2003 à 00:01:05
jose pensé que tu as testé ta requete
donc je passe directement a :
Code :
|
Citation : Note that if you are using MySQL Version 3.22 (or earlier) or if you are trying to follow ANSI SQL, you can't use expressions in GROUP BY or ORDER BY clauses. You can work around this limitation by using an alias for the expression: |
Marsh Posté le 09-01-2003 à 00:03:30
sielfried je t'aime, si si
ca fonctionne trop bien comme ça, mais j'avoue ne pas comprendre pourquoi, mais bon je suis trop content
merci encore
Marsh Posté le 07-01-2003 à 23:49:55
salut à tous,
je cherche à faire un classement selon des notes.
Je m'explique: j'ai dans une table un champs avec des nom d'élèves et un champs avec des notes.
par exemple:
david | 6
eric | 12
julie | 15
david | 14
eric | 11
julie | 13
david | 8
Donc au fur et à mesure on se retrouve avec plusieurs fois le même nom avec des notes différentes et ce que je cherche à faire c'est le calcul des moyennes par élèves et les classer dans l'ordre des moyennes.
Si il y a un malin pour m'aider parceque là je n'ose même pas montrer le script que j'ai écrit c'est un vrai massacre .
Message édité par mecano1 le 09-01-2003 à 00:05:28