如何根据总分

时间:2017-08-14 06:12:43

标签: php mysql mysqli

我有3个表我想根据主键在单个表中显示3个表数据,外键结果完美!但我需要根据第二张表中的总分数来计算排名。

结果截图: enter image description here

请有人告诉我计算等级的查询

我使用了以下mysql查询

if(isset($_POST['submit']))
{
$result = mysqli_query($con,"
SELECT s.student_name
     , s.contact_number
     , m.total
     , m.rank
     , p.father_name 
  FROM student_details s 
  JOIN mark m
    ON s.student_id = m.student_id 
  JOIN parents_details p
    ON p.student_id = s.student_id 
 WHERE s.student_name = '".$_POST['student_name']."' 
");

echo "<table border='1' align='center' cellpadding='15' bgcolor='#FFFFFF'>
<tr>
<th>NAME</th>
<th>CONTACT NUMBER</th>
<th>TOTAL MARK</th>
<th>RANK</th>
<th>FATHER NAME</th>
</tr>";

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['student_name'] . "</td>";
  echo "<td>" . $row['contact_number'] . "</td>";
  echo "<td>" . $row['total'] . "</td>";
  echo "<td>" . $row['rank'] . "</td>";
   echo "<td>" . $row['father_name'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysqli_close($con);

}?>

enter image description here enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

SELECT * FROM 
(
    SELECT @rank := @rank+1 finalrank,ZZ.* FROM
    (
        SELECT student_details.student_name, 
        student_details.contact_number, mark.total, 
        mark.rank, parents_details.father_name 
        FROM student_details 
        INNER JOIN mark ON student_details.student_id=mark.student_id 
        INNER JOIN parents_details ON parents_details.student_id=student_details.student_id ,(SELECT @rank:=0)z
        ORDER BY mark.total desc
    )ZZ
)ZZZ 
WHERE ZZZ.student_name = '".$_POST['student_name']."' 

只需尝试以上查询。

我在这里使用了SELECT @rank:=0@rank := @rank+1