Изменения документа Рекурсивный запрос

Редактировал(а) Alexandr Fokin 2023/12/16 14:12

От версии 2.11
отредактировано Alexandr Fokin
на 2022/01/03 14:54
Изменить комментарий: Update document after refactoring.
К версии 4.2
отредактировано Alexandr Fokin
на 2023/12/16 14:01
Изменить комментарий: Updated parent field.

Сводка

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,1 @@
1 -Разработка.Базы данных.SQL.MSSQL.SQL запросы.WebHome
1 +xwiki:Разработка.Базы данных 2.SQL.MSSQL.SQL запросы.WebHome
Содержимое
... ... @@ -1,3 +1,5 @@
1 +Запрос задействует механизм [[CTE>>doc:Разработка.Базы данных.SQL.MSSQL.TSQL.CTE.WebHome]].
2 +
1 1  {{code language="sql"}}
2 2  WITH RECURSIVE tree (nm, id, level, pathstr)
3 3  AS
... ... @@ -31,6 +31,18 @@
31 31  ORDER BY pathstr
32 32  {{/code}}
33 33  
34 -
35 35  Рекурсивные SQL запросы
36 36  https://habr.com/ru/post/27439/
38 +
39 +----
40 +
41 +**Дополнение:**
42 +
43 +В некоторых случаях рекурсивного запроса можно избежать (в случае извлечения из хранилища некоторого агрегата).
44 +Достаточно помимо ключа/отношения Parent-Child, добавить ключ/отношение Root-Child.
45 +Таким образом можно извлечь все поддерево Root элемента за 1 join.
46 +Это немного усложнит модель - в случае выполнения update нужно не забыть обновить оба поля. (Чтобы не допустить состояния, когда родительский элемент принадлежит к другому Root элементу)
47 +
48 +----
49 +
50 +