У меня есть таблица, в каждой строке (среди прочего) есть следующие поля:
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`)
Любая помощь будет оценена!