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

Откуда:
Сообщений: 1081
таблица с иерархией простая {id;parentid}

;with cte as (
select ty.id,ty.parentid 
from types ty
where ty.id=76 -- id искомого листа
union all
select t.id
,t.parentid 
from types t
join cte c on c.parentid=t.id
where exists (select  1 from 
					(select count(tp.id) over (partition  by tp.parentid) cn 
					from types tp 
					where tp.parentid=t.id) tt
				where cn=1)
)
select id from cte


есть ли способ красивее?
9 май 17, 15:56    [20466604]     Ответить | Цитировать Сообщить модератору
 Re: поиск в иерархии - до какого уровня ни лист, ни его родители не имеют братьев  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
waszkiewicz,

join cte c on c.parentid=t.id
у листа не может быть детей. Ваш К.О.
Непонятно также, зачем искать, если заранее известно id=76
9 май 17, 16:06    [20466613]     Ответить | Цитировать Сообщить модератору
 Re: поиск в иерархии - до какого уровня ни лист, ни его родители не имеют братьев  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1081
iap,
так то я снизу вверх ищу. Инвариант у меня ty.id=76 (к примеру). Так что К.О. ошибается IMHO
(есть вариант, что я хотелку неверно изложил)
9 май 17, 17:05    [20466705]     Ответить | Цитировать Сообщить модератору
 Re: поиск в иерархии - до какого уровня ни лист, ни его родители не имеют братьев  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
waszkiewicz
есть вариант, что я хотелку неверно изложил
Вот я и намекаю: опишите задачу точнее, с примером
9 май 17, 17:21    [20466753]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить