powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как собрать все содержимое дерева
11 сообщений из 11, страница 1 из 1
как собрать все содержимое дерева
    #39822228
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как собрать все содержимое дерева, в Oracle есть connect by prior, а здесь?

к примеру есть дерево

GR1
GR1_Sub1
GR1_Sub2
GR1_Sub2_Sub1
GR1_Sub3
GR2
GR2_Sub1
GR2_Sub2
GR2_Sub3

каждая группа и подгруппа имеет какие то значения
все подгруппы принадлежат друг к другу PARENT_ID к ID

как написать правильно в MS SQL вывод всего содержимого группы GR1 со всеми вложениями

параметры из GR1
параметры из GR1_Sub1
параметры из GR1_Sub2
параметры из GR1_Sub2_Sub1
параметры из GR1_Sub3

вчера проделал в Oracle, все прекрасно, сегодня не могу проделать также в MS SQL, видимо не все операторы знаю, а может connect by prior нет?
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822231
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63, нету...
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822234
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекурсивное CTE
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822247
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и как вывести, не заводить же трижды одну и ту же таблицу и бегать по ней по алиасам и самотреть, где кому принадлежит PARENT ID и кто в каком узлу лежит
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822255
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63к примеру есть дерево

Вы это "к примеру" лучше скриптом создания и заполнения таблицы представте. А то дерево можно по разному "нарисовать".
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822258
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве в Oracle нет рекурсивного CTE?
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822262
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

я в оракле просто распечатываю дерево, Connect By Prior собирает его достаточно быстрои правильно, далее в скрипте вывожу параметры к каждому узлу. и все. а в MS SQL так несработало.

ладно. придумал я. всем спасибо
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822264
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
WITH CTE(ID, ParentID,Name) AS
(
 SELECT ID, ParentID, 'GR'+CAST(ID AS VARCHAR(MAX)) FROM T WHERE ParentID IS NULL --Корни
 UNION ALL
 SELECT T.ID, T.ParentID, CTE.Name+'_'+T.Name
 FROM CTE JOIN T ON T.ParentID=CTE.ID
)
SELECT * FROM CTE;
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822445
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63я в оракле просто распечатываю дерево, Connect By Prior собирает его достаточно быстрои правильно, далее в скрипте вывожу параметры к каждому узлу. и все. а в MS SQL так несработало.В сиквеле так же, просто по другому называется.
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822655
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как собрать все содержимое дерева
    #39822683
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapРазве в Oracle нет рекурсивного CTE?
Вполне себе есть, синтаксис почти такой же, как в MSSQL. Я лично его в основном и использую, а не connect by.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как собрать все содержимое дерева
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]