2016-04-19 2 views
1

У меня есть две таблицы. Игрок и статистика. В плеерах есть имя пользователя и идентификатор. В статистике есть честь и id. Идентификаторы одинаковы в обеих таблицах. Один игрок, один идентификатор. Я хотел бы заказать статистику по чести и повторить ее вместе с именем пользователя в таблице.MySQL - заказ по чести и написать его в «для» вместе с именем пользователя из другой таблицы

Вот моя попытка, но я ничего не могу сделать с порядком. Счетчик игроков - счетчик. +1 причина в том, что она начинается с 2

$getPlayerCounter = mysql_query("SELECT `id` FROM `player`"); 
$playerCounter = mysql_num_rows($getPlayerCounter); 
for ($i = 2; $i <= $playerCounter + 1; $i++) { 
    $username = mysql_query("SELECT `player`.*, `stats`.* FROM `player` INNER JOIN `stats` ON `player`.`id`=$i AND `stats`.`id`=$i") or die(mysql_error());; 
    $fetch = mysql_fetch_assoc($username); 
    echo "<tr>"; 
    echo "<td>".$fetch['username']."</td>"; 
    echo "<td>".$fetch['honor']."</td>"; 
    echo "</tr>"; 
    } 

ответ

0

Без использования вашей петли. Как насчет решения, в котором вы уже запрашиваете отсортированный список? Вроде как:

SELECT * FROM player p 
    JOIN stats s on p.id = s.id 
ORDER BY s.honor DESC 

Где честь название вашей колонки для значения статистики (надеюсь, это столбец можно сортировать как число).

Вы получите массив строк, упорядоченный по значению статистики в порядке убывания (максимальное значение сверху). Теперь вы можете просто получить строку за строкой в ​​том порядке, в котором она находится в извлеченном массиве.

Идешь через массив делает это:

$result = mysql_query(the_query_above); 
while ($row = mysql_fetch_assoc($result)) { 
    echo "<tr>"; 
    echo "<td>".$row['username']."</td>"; 
    echo "<td>".$row['honor']."</td>"; 
    echo "</tr>"; 
} 
+0

Wow. Это отличное решение! Спасибо! Я должен узнать больше о mysql_fetch_assoc во время и JOIN в mysql. –

Смежные вопросы