Как проверить, находится ли необязательный диапазон дат между необязательным диапазоном дат - PullRequest
0 голосов
/ 03 апреля 2019

У меня проблемы с написанием запроса, чтобы проверить, была ли каждая доставка в диапазоне дат проекта. Я посмотрел на этот вопрос , но мой диапазон дат не обязательно закончился, и в этом случае endDate равен нулю.

И моя таблица projet, и таблица доставки содержат startDate и endDate с ограничением, чтобы убедиться, что endDate равен нулю или после startDate.

Это мой выбор:

SELECT *
FROM Projet
    INNER JOIN Delivery ON Delivery.ProjetId = Projet.ProjetId

Я пытался использовать BETWEEN, но из-за возможного NULL мне не хватает текущих проектов.

WHERE Delivery.startDate BETWEEN Projet.startDate AND Projet.endDate

1 Ответ

0 голосов
/ 03 апреля 2019

Ваш запрос должен выглядеть следующим образом:

SELECT *
FROM Projet p
INNER JOIN Delivery d ON d.ProjetId = p.ProjetId
WHERE d.startDate >= p.startDate
  AND (p.endDate is null
    OR p.endDate is not null
    AND (d.endDate is null OR d.endDate <= p.endDate)
  )
...