psevdo,
примерно так:
оплата начилась в точке DATA_PAID
продолжалась в течении SRV_COUNT * SRV_PERIOD
конечная точка в момент DATA_PAID_END = DATA_PAID + SRV_COUNT * SRV_PERIOD
сервис оплачен если NOW() попадает в промежуток между DATA_PAID : DATA_PAID_END
если вам надо селать это по работе -- делайте на клиентском языке (ПХП, Питон, итд)
если надо имено на СКЛ, то передайте своему преподу что он изврашенец :-)
примерно так:
select shop_id
from service_order
where
now() between date_paid and
case
when srv_period = 'day' then adddate(date_paid, interval srv_priod day)
when srv_period = 'week' then adddate(date_paid, interval srv_priod week)
when srv_period = 'month' then adddate(date_paid, interval srv_priod month)
end
колонка PAID совершено не нужна ибо все вычисляется по датам.