2016-04-29 13 views
-1

Ich habe eine wirklich einfache Frage, aber leider kann ich es selbst nicht herausfinden. Ich habe eine Liste von 12 Spielern, die alle eine (eindeutige) ID, Bewertung, Attribut1 und Attribut4 haben. Ich möchte nur die Reihe des Spielers mit der höchsten Bewertung gefolgt von Attribut1 und dann Attribut4. Also muss es zuerst nach der Bewertung sortieren, wenn es 2 mit der Bewertung 84 gibt, wird SQL nach Attribut1 usw. suchen. Das ist mein Code.Wählen Sie die ganze Zeile mit dem höchsten Wert

$sql = "SELECT * FROM `players_db` WHERE `id` = $player[0] OR `id` = $player[1] OR `id` = $player[2] OR `id` = $player[3] OR `id` = $player[4] OR `id` = $player[5] OR `id` = $player[6] OR `id` = $player[7] OR `id` = $player[8] OR `id` = $player[9] OR `id` = $player[10] OR `id` = $player[11] ORDER BY `rating` DESC , `attribute1` DESC, `attribute4` DESC"; 
$result = $conn->query($sql); 
while ($row = mysqli_fetch_assoc($result)) { 
echo $row['rating']; 
echo '<br>'; 
} 

Ich kann es nicht herausfinden, wie weiter zu gehen, wie ich schon

tryed

SELECT MAX ('Bewertung') FROM players_db WHERE ...

Aber dann es erhält nur die Bewertung des höchsten Spielers, also wie kann ich die ganze Reihe des Spielers mit der höchsten Bewertung bekommen, gefolgt von Attribut1 und Attribut4?

Ich hoffe, jemand kann mir helfen! Vielen Dank!

+0

Fügen Sie 'Limit 1' zu Ihrer ursprünglichen Abfrage hinzu. –

+0

@GordonLinoff OMFG schlimmste Frage, die ich jemals getan habe ... –

+0

Drei jemand half dir unten. –

Antwort

0

Verwenden LIMIT, so dass die erste wird es die Datensätze nach Bewertung sortiert, dann wird es die erste Zeile von oben AS verwendet LIMIT 1 wählen:

$sql = "SELECT * FROM `players_db` WHERE `id` = $player[0] OR `id` = $player[1] OR `id` = $player[2] OR `id` = $player[3] OR `id` = $player[4] OR `id` = $player[5] OR `id` = $player[6] OR `id` = $player[7] OR `id` = $player[8] OR `id` = $player[9] OR `id` = $player[10] OR `id` = $player[11] ORDER BY `rating` DESC , `attribute1` DESC, `attribute4` DESC LIMIT 1"; 
$result = $conn->query($sql); 
while ($row = mysqli_fetch_assoc($result)) { 
echo $row['rating']; 
echo '<br>'; 
} 
1

Diese Abfrage gibt den Datensatz mit der dem Spieler entsprechende höchste Bewertung Im Falle eines Unentschiedens werden attribute1 und attribute4 verwendet, um die Verbindung in dieser Reihenfolge zu unterbrechen.

SELECT * 
FROM players_db 
ORDER BY rating DESC, attribute1 DESC, attribute4 DESC 
LIMIT 1 
Verwandte Themen