Погуглив немного, я нашел это интересным вопросом. Хотели бы вы, ребята, выстрелы.
Наличие моего стола
USER | MAP | STARTDAY | ENDDAY
1 | A | 20110101 | 20110105
1 | B | 20110106 | 20110110
2 | A | 20110101 | 20110107
2 | B | 20110105 | 20110110
То, что я хочу, это исправить случай 2
пользователя, в котором карты A
и B
перекрываются на пару дней (с 20110105 по 20110107).
Мне бы хотелось, чтобы я мог запросить эту таблицу таким образом, чтобы она никогда не возвращала перекрывающиеся диапазоны. Мои входные данные уже неверны, поэтому мне не нужно беспокоиться об обработке конфликта, я просто хочу иметь возможность получить единственное значение для любой данной BETWEEN
этих дат.
Возможные выходные данные для запроса, который я пытаюсь построить, будут выглядеть как
USER | MAP | STARTDAY | ENDDAY
2 | B | 20110108 | 20110110 -- pushed overlapping days ahead..
2 | A | 20110101 | 20110104 -- shrunk overlapping range
Не имеет значения, вызывает ли алгоритм «недопустимые диапазоны», например Start = 20110105
, End = 20110103
, я просто поставлю ноль, когда доберусь до этих случаев.
Что бы вы сказали, ребята? Есть ли прямой способ сделать это?
Спасибо!
е.