У меня есть PHP-скрипт, отображающий список игроков, отсортированных по их «виртуальным деньгам»:
$sth = $db->prepare("
select u.id,
u.first_name,
u.city,
u.avatar,
m.money,
u.login > u.logout as online
from pref_users u, pref_money m where
m.yw=to_char(current_timestamp, 'IYYY-IW') and
u.id=m.id
order by m.money desc
limit 20 offset ?
");
$sth->execute(array($_GET['offset']));
Чтобы показать позицию игрока в списке, я использую PHP-переменную $ pos, которая увеличивается нацикл при печати их имен и других данных.
Я хотел бы иметь эту позицию в выражении SQL вместо PHP по различным причинам.Поэтому я пытаюсь сделать следующее:
$sth = $db->prepare("
select u.id,
row_number() + ? as pos,
u.first_name,
u.city,
u.avatar,
m.money,
u.login > u.logout as online
from pref_users u, pref_money m where
m.yw=to_char(current_timestamp, 'IYYY-IW') and
u.id=m.id
order by m.money desc
limit 20 offset ?
");
$sth->execute(array($_GET['offset'], $_GET['offset']));
Но получить ОШИБКА: для вызова оконной функции требуется предложение OVER
Я пытаюсь добавить over (m.money) но получаю синтаксическую ошибку.
Возможно, я неправильно понимаю Функции окна doc.