Как в MySQL расчитать наложения интервалов?

В таблице хранятся события оплаты:
CREATE TABLE table_paid (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `paid_at` int(11) NOT NULL COMMENT 'unix timestamp',
  `days` smallint(6) NOT NULL COMMENT 'paid days',
)

id записи, timestamp оплаты и число оплаченных дней. (Для упрощения убрал user_id)

Сейчас задача решается вне БД, в коде - туда выгружаются все оплаты пользователя, в цикле перебираются, суммируются накладывающиеся оплаченные периоды и включается/выключается флаг оплаченности.

Как вместо внешнего кода, только средствами MySQL получить, закончился ли на сейчас оплаченный период?

Громоздкий вариант - с временной таблицей. Туда занести timestamp'ы и +1 для события оплаты, -1 для окончания этого периода оплаты. Далее отсортировать по датам, завести переменную и суммировать её значение, проходя по строкам. Ещё не придумал, как при наложении нескольких оплаченных интервалов перенести избыток на ближайшее окончание оплаты.
  • Вопрос задан
  • 30 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы