2013-12-10 4 views
0

Этот код создает ранг на лету и устанавливает их соответственно. Теперь вопрос в том, как обновить значения Rank в таблице без дублирования?Обновление Ранг в таблице

Помогите мне пожалуйста! Благодаря ...

SELECT TeamID, 
     TeamName, 
     TeamLeader, 
     TeamEmail, 
     TeamWins, 
     TeamLoss, 
     TeamPoints, 
     TeamRank 
     FROM 
      (
      SELECT TeamID, 
        TeamName, 
        TeamLeader, 
        TeamEmail, 
        TeamWins, 
        TeamLoss, 
        TeamPoints, 
        @Rank := @Rank + 1 AS TeamRank 
        FROM team 
        CROSS JOIN (SELECT @Rank:=0) Sub0 
        ORDER BY TeamPoints DESC 
     ) Sub1 

UPDATE [Проблема решена]

Я получил проблема решена, ниже решение со ссылкой на пользователя, который решил его

Вы просто делаете Вызов SELECT. Для того, чтобы обновить его на самом деле вы должны использовать оператор UPDATE для исходной таблицы и использовать этот запрос, чтобы накормить значения teamRank:

UPDATE team t 
INNER JOIN(
     SELECT TeamID, 
     TeamPoints, 
     @Rank := @Rank + 1 AS TeamRank 
     FROM team 
     CROSS JOIN (SELECT @Rank:=0) Sub0 
     ORDER BY TeamPoints DESC 
     ) a ON a.teamID = t.teamID 
     SET t.teamRank = a.teamRank 

Пользователь: https://stackoverflow.com/users/1385896/filipe-silva "

Благодаря Филипе Сильва ..

ответ

0

Try что-то вроде этого

UPDATE 
SELECT TeamID, 
     TeamName, 
     TeamLeader, 
     TeamEmail, 
     TeamWins, 
     TeamLoss, 
     TeamPoints, 
     TeamRank 
     FROM 
      (
      SELECT TeamID, 
        TeamName, 
        TeamLeader, 
        TeamEmail, 
        TeamWins, 
        TeamLoss, 
        TeamPoints, 
        @Rank := @Rank + 1 AS TeamRank 
        FROM team 
        CROSS JOIN (SELECT @Rank:=0) Sub0 
        ORDER BY TeamPoints DESC 
     ) Sub1 
SET TeamRank=123 
WHERE TeamID =1 
+0

Я не понимаю, Что этот вопрос .. Ошибка: Предупреждение: м ysqli_fetch_assoc() ожидает, что параметр 1 будет mysqli_result, boolean задан в C: \ xampp \ htdocs \ teamrankingdb \ updated_rank.php в строке 58 –

+0

выполнить запрос в mysql напрямую, если он работает, что-то не так в вашем php-коде –

+0

Не работает в mysql –

0
UPDATE team, (SELECT @Rank:=0) Sub0 
SET  TeamRank = @Rank := @Rank + 1 
ORDER BY TeamPoints DESC 
+0

Можете ли вы изменить его в коде, чтобы он дал мне эту ошибку. Предупреждение : mysqli_fetch_assoc() ожидает, что параметр 1 будет mysqli_result, boolean задан в C: \ xampp \ htdocs \ teamrankingdb \ updated_rank.php в строке 71 –

+0

@ZainSohail: проверьте значение, возвращаемое ['mysqli_error ($ link)'] (http: //www.php.net/manual/en/mysqli.error.php). – eggyal

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