Здравствуйте!
Не знаю как более корректно сформулировать суть вопроса, попробую объяснить что я хочу сделать:
У меня есть 2 функции для перевода exp в уровень и уровень в exp:
//Кол-во опыта на уровень
function getExpLevel($level) {
return pow($level, 10/7) * 100;
}
//Уровень по опыту
function getLevelExp($exp) {
return pow($exp / 100, 7/10);
}
С их помощью, передавая в них опыт / уровень я узнал какой у пользователя уровень и сколько опыта надо на тот или иной уровень. Суть не в этом.
Я хочу выводить на странице ТОП пользователей по набранному опыту за неделю и с этим у меня есть проблема.
Как мне лучше организовать хранение данных в базе?
Например сделать 2 таблицы:
1. Таблица с user_id | total_exp (общий опыт каждого пользователя)
2. Таблица user_id | date | exp (сколько каждый пользователь набрал опыта за сутки)
Получится что из 1ой таблицы я буду брать данные для отображения в профиле пользователя и т.п., где будет показан его уровень (вычисляется по опыту)
Из 2ой таблицы я буду суммировать количество опыта каждого пользователя за последнюю неделю, группировать по user_id и выводить с сортировкой по набранному опыту. Но, мне надо будет выводить данные не за последние 7 дней, а начиная с предыдущего понедельника, т.е.:
*Если сегодня понедельник - значит я показываю ТОП по опыту за предыдущий пнд - вск.
*Если сегодня вторник, среда...воскресенье - я показываю ТОП за промежуток с текущего понедельника до текущего дня.
*В профиле пользователя я хочу показывать его текущее место в ТОПе
Вопрос:
Все с пометкой
* я смогу вычислять для предложенной мной структуры таблиц? Может вы можете подсказать мне какое-то более рациональное решение?