2016-09-24 2 views
0

Der folgende Code gibt eine Tabelle mit Daten von mysql zurück, aber was ich in der Ausgabe vermisse, ist eine generierte Spalte mit einem Rang basierend auf den Daten einer Spalte (wilks in diesem Beispiel) . Ich habe nach Beispielen und Antworten auf ähnliche Fragen gesucht, aber ich kann es nicht zum Laufen bringen.Hinzufügen eines Rangs zu meinen mySQL-Ausgabedaten

Kurz gesagt: Ich brauche eine zusätzliche Spalte neben der ID-Spalte, wo ein Rang beginnend mit 1 angezeigt wird, basierend auf den Daten aus der Wilks-Spalte.

Vielen Dank!

<?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

Es ist nicht wirklich klar, was Sie hier fragen. Meinst du, du möchtest eine neue Spalte zu deiner Tabelle hinzufügen, also "Rang", oder möchtest du das Ranking auf die "Wilks" -Spalten setzen, wie es derzeit existiert – RiggsFolly

+0

Editiere deine Frage und stelle Beispieldaten und gewünschte Ergebnisse bereit. –

+0

@RiggsFolly Ja, Sie haben Recht. Ich entschuldige mich für die Unklarheit. Ich habe 10 zufällige Athleten in der Datenbank und ich gebe alle Daten in der Tabelle auf einer Webseite aus, sortiert nach ihrer Wilks-Punktzahl. Was ich brauche, ist eine zusätzliche Spalte, die in dieser Tabelle erzeugt wird und einen Rang basierend auf ihrem Platz in der Tabelle hinzufügt. Athlet mit ID 5 hat eine Punktzahl von 400, und Athlet mit ID 1 hat eine Punktzahl von 300. Der Athlet mit 400 wird zuerst basierend auf seiner Punktzahl angezeigt und muss Rang 1 erhalten (der in einer Spalte angezeigt wird). – Mirza

Antwort

0

Erstens, wenn Sie nur einen Aufzählungswert wollen, können Sie das mit PHP bekommen.

Aber es ist leicht genug, um in MySQL, mit Variablen:

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

Technisch setzt diese die entsprechende Funktion von row_number() statt rank(). Ihre Frage ist unklar, was Sie unter "Rang" verstehen.

Verwandte Themen