Пользователи покупают отрезки времени. Например, каждая покупка это 10 дней (подряд) платной услуги.
Есть таблица оплат:
id
записи,
uid
пользователя, и
dt
время, когда оплатили (оплата начинает действовать тут же).
Например, тут это в днях.
id uid dt
1 10 0
2 10 9
3 20 10
4 30 15
5 10 25
6 10 26
7 10 27
Если оплаченные интервалы накладываются, они суммируются. Например у юзера №10 после оплат в 0 и в 9 (каждая длиной 10), конец оплаты в 20. Потом "дырка" до 25 и в 25 и чуть позже три подряд оплаты, дающие в сумме период до 55.
Как одним запросом получить сроки окончания для всех юзеров в таблице?uid paid_till
10 55
20 20
30 25
В запросе для единственного пользователя делал с переменной, которую обновлял на
@paid_till := 10 + GREATEST(IF(@paid_till is null, 0, @paid_till), dt)
Не могу сообразить, как инициализировать такую переменную для каждого нового
uid
и всё это в одном запросе.
SQL fiddle