Php 我在考试中得到了学生的名次
我有以下疑问Php 我在考试中得到了学生的名次,php,mysql,Php,Mysql,我有以下疑问 SELECT SUM( marks_obtained_written + marks_obtained_oral + marks_obtained_classwork ), FIND_IN_SET( SUM( marks_obtained_written + marks_obtained_oral + marks_obtained_classwork ), (SELECT GROUP_CONCAT(summar
SELECT
SUM(
marks_obtained_written + marks_obtained_oral + marks_obtained_classwork
),
FIND_IN_SET(
SUM(
marks_obtained_written + marks_obtained_oral + marks_obtained_classwork
),
(SELECT
GROUP_CONCAT(summarks
ORDER BY summarks DESC)
FROM
(SELECT
SUM(
marks_obtained_written + marks_obtained_oral + marks_obtained_classwork
) AS summarks
FROM
results
GROUP BY student_id) sm)
) AS rank
FROM
results
WHERE student_id = ".$student_id."
AND exam_year = ".$year."
AND exam_id = ".$exam."
AND results.class_id = ".$class_id."
AND section_id = ".$section_id."
只有在我的结果表中有一个考试时,这个查询才对我有效。
当有更多考试时,此查询计算所有考试的分数并将排名返回给我。但如果我只需要一次考试的学生排名,我需要在查询中输入考试id,当我这样做时,查询返回0作为学生排名
在上面的图片中,我得到了无效的第0个位置。但是如果我删除了考试id条件,那么我得到了正确的排名,但问题是我不想要的所有进入考试的分数总和,因为我需要特定考试的排名
因此,请任何人告诉我,我应该将考试id条件放在查询中的什么位置。尝试将考试id也放在子查询中
(SELECT
GROUP_CONCAT(summarks
ORDER BY summarks DESC)
FROM
(SELECT
SUM(
marks_obtained_written + marks_obtained_oral + marks_obtained_classwork
) AS summarks
FROM
results WHERE exam_id = ?
GROUP BY student_id
更新您的问题添加适当的数据样本和预期结果。请现在就看哦,行得通。但是有另一个错误。分数为333、333、332的学生分别排名第一、第一和第三,因为第三个学生应该排名第二。我把它放在了不同的位置,它起了作用。谢谢你的回答。