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

Откуда:
Сообщений: 75
Всем доброго времени суток.
Есть древовидная структура по типу список смежных вершин графа.

По заданию мне нужно сформировать запрос детей у определённого узла одного уровня без CTE.

С рекурсией то у меня получилось:
declare @left int = (select left_id from personal where id=@parent)

;with node as
 (
	select * from personal where left_id = @left + 1
	union all
	select p.* from personal p 
	join node n on p.left_id = n.right_id+1
 )
 select * from node

Возможно ли сделать без рекурсии?

MS SQL 2008R2
Заранее спасибо.

К сообщению приложен файл. Размер - 47Kb
17 май 15, 08:49    [17650749]     Ответить | Цитировать Сообщить модератору
 Re: Древовидная структура по типу список смежных вершин графа  [new]
lamer yuga
Guest
Евгений_lea, навскидку как-то так...

declare @node int=3;
select c.*
from personal p
join personal c on p.left_id<c.left_id and c.right_id<p.right_id
  and not exists(
    select 1 from personal t
    where t.left_id<c.left_id and c.right_id<t.right_id and t.id<>p.id
  )
where p.id=@node
17 май 15, 09:31    [17650771]     Ответить | Цитировать Сообщить модератору
 Re: Древовидная структура по типу список смежных вершин графа  [new]
lamer yuga
Guest
Поправка:
declare @node int=3;
select c.*
from personal p
join personal c on p.left_id<c.left_id and c.right_id<p.right_id
  and not exists(
    select 1 from personal t
    where t.left_id<c.left_id and c.right_id<t.right_id 
      and p.left_id<t.left_id and t.right_id<p.right_id
  )
where p.id=@node
17 май 15, 09:38    [17650776]     Ответить | Цитировать Сообщить модератору
 Re: Древовидная структура по типу список смежных вершин графа  [new]
Евгений_lea
Member

Откуда:
Сообщений: 75
lamer yuga,

Спасибо большое. У меня наверное мозкк OFF.
17 май 15, 09:52    [17650782]     Ответить | Цитировать Сообщить модератору
 Re: Древовидная структура по типу список смежных вершин графа  [new]
ЦБ
Member [заблокирован]

Откуда:
Сообщений: 2773
Евгений_lea,

Такая "система" задания дерева называется NESTED SETS
Посмотри ссылку, там много полезного, в частности и по сабжевому вопросу
17 май 15, 10:05    [17650792]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить