У меня есть 2 таблицы - Проекты и Обновления статуса. В таблице Project есть поля для идентификатора, приоритета и статуса (среди прочих), а в моей таблице обновлений Status есть поля для ProjectID и даты.
Я пытаюсь создать запрос, который будет извлекать все проекты с высоким приоритетом, которые не были завершены или отменены, и сообщать мне, какие из них не имеют обновления статуса, связанного с ними за последние 14 дней.
У меня есть следующее, но оно дает мне все проекты из левой таблицы и не фильтрует высокоприоритетные проекты, статус которых не завершен или отменен.
ЛЮБАЯ ПОМОЩЬ БУДЕТ БОЛЬШОЙ ЦЕНИТЬ.
Select proj.id, proj.Priority, proj.status, proj.ProjectName, status_tmp.statusdate, status_tmp.statusdetail
FROM proj
LEFT JOIN (SELECT s1.*
FROM projectstatus AS s1
LEFT JOIN projectstatus AS s2
ON s1.statusproj = s2.statusproj AND s1.statusdate < s2.statusdate
WHERE s2.statusproj IS NULL ) as status_tmp
ON (proj.id=status_tmp.statusproj)
where proj.Priority='High' AND proj.status!='Cancelled' and
proj.status!='Completed' AND
status_tmp.statusdate < DATE_SUB(CURDATE(),INTERVAL 14 DAY) OR
status_tmp.statusdate IS null