Нумерация строк по результату выборки из двух таблиц
Есть 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;
