Используя тот же запрос, я пытаюсь перечислить уведомления, которые не были отправлены.Я ближе к запросу, но застрял в том, как выполнить несколько условий в предложении where, основанном на определенном условии.
Я пробовал следующий запрос.
SELECT
vtn.*,
vn.v_notice_datetime
FROM
v_templates vt
JOIN v_template_notices vtn ON (vtn.v_template_id = vt.id)
JOIN violations v ON( v.v_template_id = vt.id )
LEFT JOIN vnotices vn ON(vn.vtemplate_notice_id = vtn.id)
WHERE
v.id = 1
AND vn.v_notice_datetime IS NULL
AND vtn.id > (
SELECT max(vn.vtemplate_notice_id)
FROM vnotices vn
WHERE vn.vnotice_datetime IS NOT NULL )
Я хочу соединить следующий SQL-кодкогда vn.id NOT NULL
*AND vtn.id > ( SELECT max(vn.v_template_notice_id)
FROM v_notices vn WHERE vn.v_notice_datetime IS NOT NULL)*
Является ли оператор CASE хорошим вариантом или какой-либо альтернативой?В ходе исследований выяснилось, что оператор CASE снижает производительность, но я не уверен, как выполнять условные операторы в PostgreSQL / MySql?