Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
rzn Member Откуда: Сообщений: 12 |
Здравствуйте! Возник вопрос по выводу иерархических данных вида Начальник->Подчинённый->... Т.е. таблицу с данными по персоналиям и уровнем подчинённого я вынул, теперь хотелось бы получить что-нить вроде Начальник Подчинённый_1 Подчинённый_2 ... Подозреваю, что тут надо использовать функцию PRINT. Но как это лучше сделать? В цикле проверять уровень персоны и соответственно добавлять перед её именем нужное количество пробелов? В сторону курсоров смотреть? |
26 июл 12, 00:15 [12917047] Ответить | Цитировать Сообщить модератору |
Программист-Любитель Member Откуда: Сообщений: 16839 |
ХОРОШАЯ визуализация вывода иерархии зависит от клента. Пробелы/отступы в начале строки - самое, уж простите, убогое решение. Колиент у вас что ? Для винформз и подобных самое наглядное тривью. Если есть только грид, можно ячейками кодов узлов и раскраскрой нарисовать подобие структуры
Ячейки от первого ненулевого кода до названия включительно закрашиваются каким-нибудь светлым фоном. Получается визуальная лесенка. |
|||||||||||||||||||||||||
26 июл 12, 08:04 [12917445] Ответить | Цитировать Сообщить модератору |
rzn Member Откуда: Сообщений: 12 |
Программист-Любитель, нужно именно реализовать это средствами SQL. Как сделать такое в winform'ах я знаю. :) |
26 июл 12, 08:18 [12917464] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7895 |
|
||
26 июл 12, 08:58 [12917547] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
rzn Member Откуда: Сообщений: 12 |
Владимир СА, это задача в учебных целях. Где нужно применить PRINT для выравнивания данных о начальниках/подчинённых. |
||
26 июл 12, 11:29 [12918423] Ответить | Цитировать Сообщить модератору |
Владимир СА Member Откуда: Сообщений: 7895 |
Ну если не получается, то представь данные согласно Рекомендации по оформлению сообщений в форуме пункт 6. |
||||
26 июл 12, 12:04 [12918687] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |