Добрый день! Уже два дня бьюсь над одной задачей, и никак не найду решение.
Собственно, принципе: есть бот в телеграмме, который записывает результаты дистанции участников в км. К примеру - пользователь написал результат "5.5", бот обработал и записал в БД в таблицу results *имя пользователя* - 5.5.
Потом каждое воскресенье cron выполняет такую задачу: берет данные из таблиц results, собирает такую строку: "1-имя пользователя-километраж,2-имя пользователя-километраж" и т.д., а после сохраняет в таблице archive, где есть такие поля: id, week (текущая неделя), year (текущий год), content(сама строка) и из этих данных строит пользователям отчет за каждую неделю.
Вопрос: отчет за каждую неделю я сделал путем получения через номер недели content из таблицы archive и через explode и циклы перевел значения в читаемый вид. Но вот с годовыми отчетами полный ступор. Везде в archive год проставлен как year = 1. Суть в том, что участники могут быть одни и те же за разные недели и мне надо их результат суммировать.
К примеру, есть такие записи в таблице archive:
Неделя 1: 1-Иван-24.5,2-Владимир-30
Неделя 2: 1-Александр-30.2,2-Иван-20
Неделя 3: 1-Владимир-4,2-Иван-10,3-Александр-5.5
Нужно отобразить:
Иван - 54.5
Александр - 35.5
Владимир - 34
о господи.
никакой таблицы archive, никакого ада с explode, никакого крона и никакого колупания с массивами в пхп тут быть не должно.
в таблице results должно быть поле с датой. вся нужная информация берется из нее одним запросом
SELECT user, sum(km) FROM results WHERE date BETWEEN начало AND конец GROUP BY user
Вместо начало и конец подставить нужные даты - хоть неделя, хоть месяц, хоть год.