Есть таблица chats, а так же таблица members. Я пытаюсь получить новые чаты.
SELECT *
FROM
chat.members AS m
JOIN chat.chats AS c
WHERE m.chatid = c.id AND m.userid = ?i
И получаю массив:
[0] => Array
(
[id] => 21
[userid] => 1
[chatid] => 21
[lastvisit] =>
[display] => 1
[lastupdate] => 2018-02-07 15:23:06
)
Но дело в том, что как только я добавляю в запрос AND m.lastvisit < c.lastupdate
то есть условие, что нужно сделать выборку только там, где визит пользователя был раньше, чем произошло обновление чата, мне возвращается пустой массив, выборка не происходит.
Я не могу понять почему, так как элементарно в полученном прежде массиве, поле lastvisit
пусто (пользователь ещё не посещал чат), а поле lastupdate
имеет значение, и следовательно проверка AND m.lastvisit < c.lastupdate
должна сработать.
Нет. Не должна. lastvisit
имеет значение NULL
. А все операции (в том числе и сравнение) с NULL
дают NULL
(который интерпретируется как FALSE). Кроме, собственно, непосредственной проверки IS NULL
/ IS NOT NULL
Если я правильно понял, то Вам нужен такой запрос
SELECT *
FROM
chat.members AS m
JOIN chat.chats AS c
WHERE
m.chatid = c.id AND
m.userid = ? AND
(m.lastvisit < c.lastupdate OR m.lastvisit IS NULL)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет, есть такая задача, существует несколько многомерных массивов, грубо говоря 1:мСложность в чем, все реквизиты разбиты на группы,...
Подскажите, пожалуйста, как задать размер (А4, с отступами 0, 15, 2, 0 (см) от границы) pdf в DOMPDF, используя set_Paper?