Лимиты и счетчики в условиях запроса - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть таблица, в каждой строке (среди прочего) есть следующие поля:

  • order_overall_limit общий лимит показов (может быть 0 - без ограничений или число);
  • order_daily_limit дневной лимит показов (может быть 0 - без ограничений или числом);
  • order_hourly_limit лимит почасовых показов (может быть 0 - без ограничений или числом);
  • order_overall_counter счетчик общего количества показов (никогда не обнуляется);
  • order_daily_counter счетчик ежедневных показов (обнуляется один раз в день);
  • order_hourly_counter счетчик почасовых показов (обнуляется) один раз в час).

Я пытаюсь написать запрос, который будет следовать следующим правилам:

  • Если order_overall_limit = 0 или order_overall_limit <<code>order_overall_counter - затем показать эту запись
  • Если order_daily_limit = 0 или order_daily_limit <<code>order_daily_counter - показать эту запись
  • Если order_hourly_limit = 0 или order_hourly_limit <<code>order_hourly_counter - затем показать эту запись
  • Если общий лимит превышен (order_daily_limit> = order_daily_counter) - тогда не показывать эту запись, независимо от других ограничений.
  • Если общий лимит в порядке, но дневной лимит превышен (order_daily_limit> = order_daily_counter) - тогда не показывать эту запись, независимо от часового лимита.
  • Если общие и дневные лимиты в порядке, но почасовой лимит превышен (order_hourly_limit> = order_hourly_counter) - тогда не показывать эту запись.
  • Если order_overall_limit = 0 - тогда у нас нет общего лимита.
  • Если order_daily_limit = 0 - тогда у нас нет дневного лимита.
  • Если order_hourly_limit = 0 - тогда мы У меня нет часового лимита.

Я пытался сделать это так, но он работает неправильно (например, этот запрос игнорирует дневной лимит, если установлен общий лимит, но не более пока):

SELECT * FROM `my_table` 
WHERE
    (`order_overall_limit`=0 OR `order_overall_counter`<`order_overall_limit` )
AND (`order_daily_limit`=0 OR `order_daily_counter`<`order_daily_limit` ) 
AND (`order_hourly_limit`=0 OR `order_hourly_counter`<`order_hourly_limit`)

Любая помощь будет оценена!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...