calvinsdad Ответов: 1

Алгоритм последовательной организации/вставки дат


Привет,
Мне нужно построить алгоритм, который может посмотреть на X количество записей, в которых есть перекрывающиеся даты, и организовать и повторно вставить эти значения дат в хронологической последовательности.
Напр.:
В таблице есть такая запись:

Дата Начала Значение Даты Окончания
1/1/2019 12/31/2099 10

Когда вставляется новая запись, подобная этой,
5/1/2019 5/31/2019 25

Алгоритм должен организовать записи таким образом и вставить их в новую таблицу:
1/1/2019 4/30/2019 10
5/1/2019 5/31/2019 25
6/1/2019 12/31/2099 10

Исходная таблица не должна быть изменена, то есть не должно быть повторной вставки/переупорядочения записей в этой исходной таблице.

Есть ли какие-нибудь советы о наиболее эффективном способе достижения этой цели? Не ищу конкретных решений для баз данных.. только программирование.
Спасибо!

Что я уже пробовал:

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

1 Ответов

Рейтинг:
2

Wendelius

Не уверен, правильно ли я понимаю вопрос и если речь идет о СУБД, но...

В большинстве случаев данные не сортируются в таблице, а сортируются при извлечении. СУБД повторно использует свободное пространство, и некоторые СУБД могут перемещать строки при необходимости, поэтому в зависимости от решения сортировка может быть невозможна на физическом уровне. Кроме того, нет никакого способа получить данные, используя физический порядок.

Основываясь на вашем примере, почему бы просто не использовать ORDER BY предложение с использованием двух полей. Например

SELECT ...
FROM ...
ORDER BY StartDate, EndDate