2017-08-14 169 views
0

我有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

请参阅https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+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

+0

中显示排名。但它显示等级7,但我有4个数据在我的桌子!如何解决这个问题? –

+0

只是提供您的示例数据。 –

+0

我添加了我上面的示例数据屏幕截图,并执行了sql查询截图 –