В игре у меня есть список пользователей, данные которых записаны в таблицу под названием «ранги».Эти пользователи выигрывают очки день за днем, и за каждый день у них появляется новая запись в таблице рейтинга.Но некоторые дни важнее других, и очки могут заплатить больше.По техническим причинам мне пришлось хранить начальные точки в базе данных.Поэтому я добавил новое поле «коэффициент», и мне нужно вычислить общее количество баллов на лету.
Например, эти пользователи:
user, points, day, coefficient
user 1, 35 points, day 1, coefficient 1
user 1, 20 points, day 2, coefficient 1
user 1, 15 points, day 3, coefficient 2
user 2, 40 points, day 1, coefficient 1
user 2, 35 points, day 2, coefficient 1
user 2, 5 points, day 3, coefficient 2
Я хотел бы рассчитать баллы за все дни, за каждый день или за несколько дней в одно и то же время.Мой запрос кажется неправильным в течение нескольких дней:
$sql = 'SELECT (SUM(r.points) * r.coefficient) AS total
FROM ranks AS r
GROUP BY user
ORDER BY total DESC ';
$sql = 'SELECT (SUM(r.points) * r.coefficient) AS total
FROM ranks AS r
WHERE day IN (2,3)
ORDER BY total DESC ';
У меня есть некоторые трудности с форматированием второго запроса для правильной работы.
Спасибо всем!
Александр