Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我在考试中得到了学生的名次_Php_Mysql - Fatal编程技术网

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的学生分别排名第一、第一和第三,因为第三个学生应该排名第二。我把它放在了不同的位置,它起了作用。谢谢你的回答。