Решение: как удалить userpoints на определенную дату

Главные вкладки

Аватар пользователя Алексей Дёмин Алексей Дёмин 19 августа 2011 в 11:24

Появилась потребность удалить записи Userpoints,которые меньше определенной даты.
Я решил это сделать через sql запрос.
алгоритм действий такой:
1) удаляем записи из {userpoints_txn}, которые меньше определенной даты (можно и другие условия :)). Для вычисления и преобразования дат есть тулза http://www.cy-pr.com/tools/time/

delete `main_userpoints_txn` where `changed`<`2011-06-01`

2) удаляем ВСЕ записи из {userpoints}

TRUNCATE TABLE `main_userpoints`

3) вставляем суммы значений, сгруппированные по uid и tid из оставшихся записей в {userpouints_txn}

insert into `main_userpoints` (`uid`, `points`, `last_update`, `tid`)
SELECT `uid`, sum(`points`), `changed`, `tid` FROM `main_userpoints_txn`
group by `uid`, `tid`

ps: Делал тупо в phpmyadmin, наверное можно это облачить в более универсальную форму, в виде модуля или php сниппета. но мне лень Smile