HY,
我正在做一些学校项目,我希望我能得到正确的答案,事情是我试图对一个班级学生进行排名,但是如果有两个学生得分相同的结果,那么它就赢了。给他们相同的排名,我希望它给他们相同的排名,并跳到下一个排名再次进入处理。
<?php $result = mysql_query("SELECT * FROM score ORDER BY AVERAGE");
$rank= 0; while($go = mysql_fetch_array($result)){$miki = ++$rank;
$sql = mysql_query("INSERT INTO rank(student_id,avg,rank) VALUES('$go['student_id']','$go['avg']','$miki')"); } ?>
它有效,它排名但如果两个学生的平均成绩相同,则不会对它们进行排名相同。
答案 0 :(得分:0)
你想要缓存最新一次运行及其排名的平均值,试试这个:
<?php $result = mysql_query("SELECT * FROM score ORDER BY AVERAGE");
$rank=0;
$cache_average=null;
$cache_rank=0;
while($go = mysql_fetch_array($result)) {
if($go['avg'] != $cache_average)
$cache_rank = $rank;
$sql = mysql_query("INSERT INTO rank(student_id,avg,rank) VALUES('$go['student_id']','$go['avg']','$cache_rank')");
$cache_average = $go['avg'];
$rank++;
}
?>