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

Откуда:
Сообщений: 2
Есть таблица вида

id Name Parent
1 Otdel1 NULL
2 worker 1
3 bookkeeper 1
4 Otdel2 NULL
5 worker 4
6 bookkeeper 4
7 driver 1

Как вытащить запросом все проффесии отдела 1, в виде:

(результат запроса)

1 Otdel1 Null
2 worker 1
3 bookkeeper 1
7 driver 1
19 янв 12, 16:05    [11933792]     Ответить | Цитировать Сообщить модератору
 Re: Иерархия в одной таблице  [new]
Иванов Александр Александрович
Member

Откуда:
Сообщений: 1136
Мде...
SELECT * FROM Table WHERE id = 1 OR Parent = 1
Оно?
19 янв 12, 16:40    [11934158]     Ответить | Цитировать Сообщить модератору
 Re: Иерархия в одной таблице  [new]
Criticals
Member

Откуда:
Сообщений: 2
Оно.
А я копался в лефт джоине(
19 янв 12, 17:07    [11934420]     Ответить | Цитировать Сообщить модератору
 Re: Иерархия в одной таблице  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
Вообще это сложно назвать иерархией :)
Более универсально,на все случаи
;with cte(parentID,ID,level)
as
(
select parent,id,0
from table
where id =@id
union all
select cte.id,t.id,cte.level+1
from cte
inner join @table t on t.Parent = cte.id
)
select space(cte.level * 4) + t.name,t.id,t.name,t.parent from cte
inner join table t on t.id = cte.id
order by cte.parentID, cte.level
19 янв 12, 17:32    [11934634]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить