SQL Выборка записей отсортированных с учётом бонусов
Есть таблица очередей clan_help_parts с полями id, date, login, bonus, penalty.
Задача: вывести записи таблицей, упорядоченных по дате, при этом сдвигать записи с учётом бонусов-пенальти.
Если без сортировки по дате, то работает так:
$sql = "SELECT *, (id + penalty - bonus) as position FROM clan_help_parts ORDER BY position";
Т.е. нужно, чтобы они сначала сортировались по дате, а потом к ним применялись сдвиги (т.е. например bonus = 1 означает что позиция в очереди сдвинется на -1 к началу). Вариант "ORDER BY date, position" не то.
Можно ли это сделать в один запрос? Или вариант только выводить в php в многомерный массив, там назначать позиции-сдвиги, потом сортировать и выводить.
Ответы (1 шт):
Автор решения: Mike
→ Ссылка
select *, num-bonus
from (
select *, @num:=@num+1 num
from clan_help_parts, (select @num:=0) x
order by date
) y
order by num-bonus