2016-09-24 20 views
0

下面的代碼是從mysql返回一個包含數據的表,但是我在輸出中缺少的是帶有基於列數據的排名的生成列(在本例中爲wilks) 。我已經查找過類似問題的例子和答案,但是我無法使其發揮作用。向我的mySQL輸出數據添加一個排名

簡而言之:根據Wilks列中的數據,我需要在顯示從1開始的等級的ID列旁邊添加一個額外的列。

非常感謝!

<?php 
$con=mysqli_connect("localhost", "user", "password", "dbname"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$result = mysqli_query($con,"SELECT * FROM `Mannen` ORDER BY `Wilks` DESC"); 

echo "<table border='1'> 
<tr> 
<th>#</th> 
<th>Naam</th> 
<th>Lichaamsgewicht</th> 
<th>Vereniging</th> 
<th>Squat</th> 
<th>Bench</th> 
<th>Deadlift</th> 
<th>Totaal</th> 
<th>Wilks</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) 
{ 
    echo "<tr>"; 
    echo "<td>" . $row['ID'] . "</td>"; 
    echo "<td>" . $row['Naam'] . "</td>"; 
    echo "<td>" . $row['Lichaamsgewicht'] . "</td>"; 
    echo "<td>" . $row['Vereniging'] . "</td>"; 
    echo "<td>" . $row['Squat'] . "</td>"; 
    echo "<td>" . $row['Bench'] . "</td>"; 
    echo "<td>" . $row['Deadlift'] . "</td>"; 
    echo "<td>" . $row['Totaal'] . "</td>"; 
    echo "<td>" . $row['Wilks'] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 

mysqli_close($con); 
?> 
+0

這是不是很清楚你在這裏問什麼。你的意思是你想要一個新的列添加到你的表中,即「排名」,或者你是否想將排名基於當前存在的'wilks'列 – RiggsFolly

+0

編輯你的問題並提供樣本數據和期望的結果。 –

+0

@RiggsFolly是的,你是對的。我很抱歉不清楚。 我有10個隨機運動員在數據庫中,我輸出所有的數據在網頁上的表格,按他們的威爾克斯分數排序。我需要的是在該表中生成的額外列,並根據他們在表中的位置添加等級。 ID 5的運動員得分爲400,ID 1的運動員得分爲300.根據他的得分首先顯示400的運動員,並且需要獲得1級(顯示在列中)。 – Mirza

回答

0

首先,如果你只是想枚舉值,你可以使用PHP。

但是,它是在MySQL中很容易,使用變量:

SELECT m.*, (@rn := @rn + 1) as rank 
FROM Mannen m CROSS JOIN 
    (SELECT @rn := 0) params 
ORDER BY Lichaamsgewicht DESC; 

技術上講,這實現了row_number()而非rank()相關的功能。你的問題不清楚你的意思是「等級」。

相關問題