Got таблицу в SQL Server 2005, который используется для поддержания истории сливающихся операций:Найти последнюю запись в одной таблице цепи (SQL Server)
- Колонка FROM_ID (INT)
- Column TO_ID (int)
Теперь мне нужен запрос, который принимает исходный FROM_ID в качестве ввода и возвращает последний доступный TO_ID.
Так, например:
- ID 1 слит с ID 2
- Позже, ID 2 сливается с ID 3
- Опять позже, ID 3 слито с ID 4
Таким образом, запрос, который я пытаюсь собрать, будет принимать в качестве входных данных (в предложении WHERE, который я предполагаю) ID 1, и должен дать мне последний доступный TO_ID в этом случае. 4.
Я полагаю, мне нужна логика рекурсии, но не знаю, как начать.
Спасибо!
Матье
Протестировано, и почти там, кроме того, что MAX (ToID) не будет работать, потому что идентификатор назначения, с которым нужно объединиться, не обязательно больше, чем предыдущий идентификатор назначения в той же цепочке ... Итак, ID 1 может объединиться до 3, а затем 3 может слить до 2, например – tjeuten
. Могло исправить это, добавив метку времени к информации о слиянии и выбрав метод «сверху 1 порядок по дате». Но было интересно, можно ли это сделать без timestamping – tjeuten