Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 PRINT и вывод иерархических данных  [new]
rzn
Member

Откуда:
Сообщений: 12
Здравствуйте!

Возник вопрос по выводу иерархических данных вида Начальник->Подчинённый->...
Т.е. таблицу с данными по персоналиям и уровнем подчинённого я вынул, теперь хотелось бы получить что-нить вроде

Начальник
Подчинённый_1
Подчинённый_2
...

Подозреваю, что тут надо использовать функцию PRINT. Но как это лучше сделать? В цикле проверять уровень персоны и соответственно добавлять перед её именем нужное количество пробелов? В сторону курсоров смотреть?
26 июл 12, 00:15    [12917047]     Ответить | Цитировать Сообщить модератору
 Re: PRINT и вывод иерархических данных  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
ХОРОШАЯ визуализация вывода иерархии зависит от клента. Пробелы/отступы в начале строки - самое, уж простите, убогое решение. Колиент у вас что ? Для винформз и подобных самое наглядное тривью. Если есть только грид, можно ячейками кодов узлов и раскраскрой нарисовать подобие структуры

Код1Код2Код3Название
1.Начальник
1.1Зам начальника
1.1.1СУКИ - Случайно Уцелевший Квалифицированный Исполнитель
1.2Помошник начальника
1.2.1...


Ячейки от первого ненулевого кода до названия включительно закрашиваются каким-нибудь светлым фоном. Получается визуальная лесенка.
26 июл 12, 08:04    [12917445]     Ответить | Цитировать Сообщить модератору
 Re: PRINT и вывод иерархических данных  [new]
rzn
Member

Откуда:
Сообщений: 12
Программист-Любитель,

нужно именно реализовать это средствами SQL. Как сделать такое в winform'ах я знаю. :)
26 июл 12, 08:18    [12917464]     Ответить | Цитировать Сообщить модератору
 Re: PRINT и вывод иерархических данных  [new]
Владимир СА
Member

Откуда:
Сообщений: 7895
rzn
Программист-Любитель,
нужно именно реализовать это средствами SQL. Как сделать такое в winform'ах я знаю. :)
Ну если знаешь как в WinForm, то оттуда в Excel полюбому можно (в любом виде, даже и тот, который ты показал)... Ведь скорее всего тебе кому-то это надо показывать, а не просто табличку заполнить...
26 июл 12, 08:58    [12917547]     Ответить | Цитировать Сообщить модератору
 Re: PRINT и вывод иерархических данных  [new]
qwerty112
Guest
declare @t table (id_group int, name varchar(max), level int)

insert into @t

select 1, 'Начальник_1', 1 union all
select 1, 'Подчинённый_11', 2 union all
select 1, 'Подчинённый_12', 2 union all
select 1, 'Подчинённый_121', 3 union all
select 2, 'Начальник_2', 1 union all
select 2, 'Подчинённый_21', 2 union all
select 2, 'Подчинённый_22', 3

select replicate(char(32), (level-1)*10)+name as xz
from @t
order by id_group, level

(7 row(s) affected)
xz
-----------------------------------------
Начальник_1
          Подчинённый_11
          Подчинённый_12
                    Подчинённый_121
Начальник_2
          Подчинённый_21
                    Подчинённый_22

(7 row(s) affected)
26 июл 12, 09:06    [12917565]     Ответить | Цитировать Сообщить модератору
 Re: PRINT и вывод иерархических данных  [new]
rzn
Member

Откуда:
Сообщений: 12
Владимир СА
Ведь скорее всего тебе кому-то это надо показывать, а не просто табличку заполнить...

Владимир СА, это задача в учебных целях. Где нужно применить PRINT для выравнивания данных о начальниках/подчинённых.
26 июл 12, 11:29    [12918423]     Ответить | Цитировать Сообщить модератору
 Re: PRINT и вывод иерархических данных  [new]
Владимир СА
Member

Откуда:
Сообщений: 7895
rzn
Владимир СА
Ведь скорее всего тебе кому-то это надо показывать, а не просто табличку заполнить...
Владимир СА, это задача в учебных целях. Где нужно применить PRINT для выравнивания данных о начальниках/подчинённых.
Впринципе идею qwerty112 показал...
Ну если не получается, то представь данные согласно Рекомендации по оформлению сообщений в форуме пункт 6.
26 июл 12, 12:04    [12918687]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить