我有一张表,其中有四名学生的不同考试记录都在同一个班级。这个标记还没有在数据库中总结出来。我的问题是,是否可以在前端对各个学生的分数求和,然后对它们进行排名?我已经成功地在前端总结了标记但我的排名代码不起作用。第一个表显示数据库记录,而第二个表显示结果虽然排名为空:(
这是我尝试的排名代码
<?php
$getrnk=$db->query("SELECT SUM(marks)FIND_IN_SET( marks, (
SELECT GROUP_CONCAT( marks
ORDER BY marks DESC )
FROM examresults )
) AS rank
FROM examresults
WHERE adm_no ='$reg'");
$getrnk->execute();
$rnk=$getrnk->fetch(PDO::FETCH_ASSOC);
$strank=$rnk['rank'];
echo $strank;
?>
答案 0 :(得分:3)
您的代码非常聪明,所以让我们努力使其成功:
SELECT SUM(marks),
FIND_IN_SET(SUM(marks),
(SELECT GROUP_CONCAT(summarks ORDER BY summarks DESC )
FROM (SELECT SUM(marks) as summarks
FROM examresults
GROUP BY adm_no
) sm
)
) AS rank
FROM examresults
WHERE adm_no = '$reg';
我印象深刻,因为我永远不会想到使用find_in_set()
以这种方式获得排名。通常在MySQL中,人们会使用变量进行排名。