NeoAnomaly
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Знатоки SQL, подскажите, как можно решить следующую задачу(диалект mssql). Имеется таблица в которой записи представлены плоским деревом(parent-child), глубина не ограничена, необходимо вернуть записи с каждого уровня и вроде бы просится сюда рекурсия на CTE, но не могу сообразить, как сделать проверку условия на некоторых уровнях. Для примера возьмём следующий набор данных: Код: Id ParentId Level Field ---------------------------------------------- 1 null 0 SomeValue0 2 1 1 SomeValue1 3 1 1 SomeValue2 4 1 1 SomeValue3 5 2 2 SomeValue4 6 2 2 SomeValue5 7 3 2 SomeValue6 8 7 3 SomeValue7 | На выходе я должен получить: Код: Id ParentId Level Field ---------------------------------------------- 1 null 0 SomeValue0 3 1 1 SomeValue2 7 3 2 SomeValue6 8 7 3 SomeValue7 | Благодаря тому, что спустился от записи с ParentId = null, до самой вложенной записи по пути проверив, что на уровне 1 значение Field = SomeValue2 и на уровне 2 Field = SomeValue6. Можно и в обратном порядке child -> parent, тут закавыка, как на определённых уровнях проверять условие? | Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 19:31 12-12-2018 | Исправлено: NeoAnomaly, 20:44 12-12-2018 |
|