Гуру-тест: Как получить все отрезки, пересекающий заданный.
Есть справочник периодов Периоды, с полями ДатаС, ДатаПо, обозначающими начало и конец периода (включая границы).
Нужно написать запрос, которая по заданному интервалу Дата1-Дата2 найдет все периоды, которые попадают в заданный.
Тут есть одна хитрость в формировании условия отбора, можно просто озвучить алгоритм отбора периодов, без уточнения в SQL-коде.
Нужно написать запрос, которая по заданному интервалу Дата1-Дата2 найдет все периоды, которые попадают в заданный.
Тут есть одна хитрость в формировании условия отбора, можно просто озвучить алгоритм отбора периодов, без уточнения в SQL-коде.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(9) есть проще, есть... надо просто сломать шаблон.
Вы сейчас мыслите шаблонно, потому и условия сложные получаются.
Вам поставили задачу - найти отрезки, пересекающиеся с главным отрезком (выбранным периодом).
Вы ее и выполняете тупо в лоб.
А можно решить эту же задачу со стороны...
Если отрезок полностью входит внутрь искомого периода, то это тоже пересечение. Учитываем его тоже.
Вы сейчас мыслите шаблонно, потому и условия сложные получаются.
Вам поставили задачу - найти отрезки, пересекающиеся с главным отрезком (выбранным периодом).
Вы ее и выполняете тупо в лоб.
А можно решить эту же задачу со стороны...
Если отрезок полностью входит внутрь искомого периода, то это тоже пересечение. Учитываем его тоже.
(11) а, блин, ты меня уел.
Я то немного другое условие юзал, но тоже короткое.
Исходил от обратного.
Если отрезок начинается после &ДатаОкончания или заканчивается до &ДатаНачала, то не подходит.
По сути это то же условие, но инвертированное. Если бы применил правила формальной логики, получил бы ваше условие.
Век живи, век учись. Спасибо!
Я то немного другое условие юзал, но тоже короткое.
Исходил от обратного.
Если отрезок начинается после &ДатаОкончания или заканчивается до &ДатаНачала, то не подходит.
По сути это то же условие, но инвертированное. Если бы применил правила формальной логики, получил бы ваше условие.
Век живи, век учись. Спасибо!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот