Я получаю разные результаты, изменяя порядок моих, где условия, но я не понимаю, почему:Должен ли заказ в этом месте где?
SELECT
...
WHERE (
-- Ramps that start this month
(r.start_dte > ? AND r.start_dte <= ?)
OR
-- Ramps that end this month and have no follow-up.
(r.end_dte >= ? AND r.end_dte <= ? AND r.id = m.latestId)
)
-- Throw out expired schedules or contracts
AND (s.term_dte > r.start_dte or s.term_dte is null)
AND (c.term_dte > r.start_dte or c.term_dte is null)
-- Throw out a ramp if its end date is before its start date
AND (r.end_dte > r.start_dte)
AND s.name not like '%zz%'
Мое намерение для одного из первых двух условий должны быть выполнены (пандус должен либо начинаются в этом месяце или заканчиваются в этом месяце & не имеют последующих действий) и ВСЕ другие условия, которые должны быть выполнены. Разве я не написал это?
Я знаю, что все работает неправильно, так как я получаю результаты, которые нарушают второе состояние AND
.
Ваши предложения второго и второго-последнего в конфликте. Зачем говорить (A ИЛИ B), а затем говорить (A)? Где A - s.term_dte> r.start_dte. – Lukos
Извините, я имел в виду r.end_dte. В заявлении от второго к последнему говорится, что получают только пандусы, чьи даты заканчиваются после даты начала. Во втором предложении говорится, что только рампы, чьи конечные даты падают между временным диапазоном. Я не думаю, что они в конфликте. –