Я пытаюсь запустить SQL-запрос в PHP, который должен вернуть одну строку на основе следующих двух полей:
- first_shown_date
- last_shown_date
Я пытаюсь выбрать одну строку на основе следующих условий:
last_shown_date
= сегодняшняя дата, если false, то: first_shown_date
= 0000-00-00, если false, то: last_shown_date
с самой старой датой, это будет значение по умолчанию
Запрос, который у меня есть, дает мне неправильную строку, так как у меня есть однастрока с last_shown_date
, установленным на текущую дату, так что это строка, которая должна отображаться, но строка, которая фактически отображается, является строкой с самой старой датой в last_shown_date
.
Я не могупонять это, вместо того, чтобы быть «ИЛИ», в идеале он будет функционировать как оператор «IF ELSE», так что, если правило # 1 не выполнено, то выберите следующее, но если правило # 1 истинно, то используйте этоодин, а не следующий.Я попробовал операторы if и CASE, но они не работали так, как нужно.
Вот код, который у меня есть на данный момент:
SELECT
`id`,
`content`
FROM `".USED_TBL."`
WHERE
`last_shown_date` = '$dateDB' OR (`last_shown_date` != '$dateDB' AND
`first_shown_date` = '0000-00-00' OR(`first_shown_date` != '0000-00-00' AND
`last_shown_date` < '$dateDB'))
AND `status` != 2
ORDER BY
`last_shown_date` ASC
LIMIT 1