Задать вопрос
@Qeez

Как рассчитать дату истечения VIP статуса?

Покупателям раз в день будет определятся статус
в зависимости от суммы их заказов за 120 дней.
Vip от 10 000 || Vip2 от 20 000 || Vip3 от 30 000

SELECT `customer_id`, SUM(`total`) 
FROM `orders` 
WHERE `date` >  DATE_SUB(NOW(), INTERVAL 120 DAY) 
GROUP BY `customer_id`

далее по SUM вычисляем статус. а как получить дату истечения статуса?
она будет совпадать с датой одного из старых заказов за эти 120 дней.

в голову приходит лишь вариант перебора заказов каждого пользователя в php
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Qeez Автор вопроса
Думаю решение в php больше, чем в mysql.
Это мне понятно. закрываю тему.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Рассматривайте данные отдельно и логику отдельно. Завтра вы можете захотеть поменять эти правила.

Вам нужно иметь у покупателя статус и дату его истечения. Лучше это сделать отдельной таблицей чтобы не затрагивать непосредственно данные покупателя.
В результате все просто - вам необходимо только добавлять в эту таблицу записи по покупателям, которых там нет. Вы агрегируете данные по заказам покупателя, выбивая их количество и дату, а потом добавляете в таблицу. Статусы, которые истекли можно таким образом даже не удалять - зависит от того нужны вам эти данные или нет.

Со временем статусов будет больше, срок действия может меняться, а структура позволит вам все что вы захотите.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы