Нумерация строк по результату выборки из двух таблиц

Есть 2 таблицы. В обеих таблицах есть одинаковые столбцы с одинаковым значением. Есть код

SELECT (@row_number:=@row_number + 1) AS num, place, nick, authid, 
((frags-headshots)* 1+ headshots* 1+ (explode + defused + hostages)* 3+ (explode + defused + hostages)* 3 + c.cms_addxp) AS sort, c.cms_addxp AS cxp, w.cms_addxp AS wxp
FROM (SELECT @row_number:=0) AS t, csstats_players c 
INNER JOIN csstats_extra_stats w USING(authid)
ORDER BY sort DESC LIMIT 5;

Делаю нумерацию строк с последующей ее записью в столбец- num будет записан в place. Сортировка строк по столбцу sort

Проблема в следующем. Если в сортировке использовать значение из таблицы c (c.cms_addxp), получаем нужный результат, где num присвоен по убыванию значения sort введите сюда описание изображения

Но, если использовать значение из другой таблицы w (w.cms_addxp), то получается непонятный результат

`hostages)* 3 + w.cms_addxp) AS sort`

введите сюда описание изображения

Из-за этого неверно устанавливается колонка place.


Ответы (1 шт):

Автор решения: zhorzh78

Правильный рабочий запрос

UPDATE `csstats_players` r SET place=(SELECT @a:=@a+1 FROM (SELECT @a:=0) s) 
ORDER BY (frags-headshots)* 1+ headshots* 1+ (explode + defused + hostages)* 3+ (explode + defused + hostages)* 3 + 
(SELECT `cms_addxp` FROM `csstats_extra_stats` WHERE authid=r.authid) DESC;
→ Ссылка