2016-04-29 4 views
-1

У меня есть очень простой вопрос, но, к сожалению, я не могу понять это сам. У меня есть список из 12 игроков, у которых есть (уникальный) ID, рейтинг, атрибут1 и атрибут4. Я ТОЛЬКО хочу, чтобы строка игрока имела самый высокий рейтинг, а затем атрибут1, а затем атрибут4. Так что сначала придется сортировать по рейтингу, если есть 2 с рейтингом 84, SQL будет проверять атрибут1 и т. Д. Это мой код.Выделите весь ряд результатов с максимальным значением

$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>'; 
} 

Я не могу понять, как идти дальше, как я уже судимое

SELECT MAX ('рейтинг') FROM players_db WHERE ...

Но тогда он получает рейтинг самого высокого игрока, поэтому как я могу получить всю строку игрока с самым высоким рейтингом, за которым следуют атрибут1 и атрибут4?

Я надеюсь, что кто-то может мне помочь! Благодаря!

+0

Добавить 'limit 1' в ваш первоначальный запрос. –

+0

@GordonLinoff OMFG худший вопрос, который я когда-либо делал ... –

+0

Три человека помогли вам выйти ниже. –

ответ

0

Использование LIMIT, так что сначала он будет сортировать записи по рейтингу, то он выберет первую строку из верхней AS используется LIMIT 1:

$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

Этот запрос даст запись, соответствующую игрока с самый высокий оценка. В случае галстука attribute1 и attribute4 будут использованы для разрыва галстука в указанном порядке.

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