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

Откуда: Киев
Сообщений: 2611
Добрый день.

Если ли какой то способ , вывести для таблицы (ObjectID, ObjectParentID) для каждого ObjectID , ObjectParentID определенного уровня.

Вот так , получаю уровни

WITH C (ObjectID, ObjectParentID, LevelNum) AS
(
	SELECT B.ObjectID, ObjectParentID, 0 FROM dbo.Object AS B WHERE ObjectID = 2
	UNION ALL
	SELECT B.ObjectID, B.ObjectParentID, (LevelNum + 1) FROM Object AS B
		INNER JOIN C ON C.ObjectID = B.ObjectParentID
)

SELECT * FROM C


нужно получить такое как на рисунке

К сообщению приложен файл. Размер - 40Kb
22 июн 11, 14:09    [10854223]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсия , показать предка определенного уровня  [new]
_ч_
Member

Откуда:
Сообщений: 1446
Andrey1306,

Наверное так?
SELECT C.ObjectID, CASE WHEN CC.ObjectID IS NULL THEN C.ObjectParentID ELSE CC.ObjectID END AS ObjParentID, C.LevelNum FROM C
left join C AS CC ON C.LevelNum = CC.LevelNum +2
22 июн 11, 14:27    [10854446]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсия , показать предка определенного уровня  [new]
_ч_
Member

Откуда:
Сообщений: 1446
Вот так:
SELECT C.ObjectID, CASE WHEN CC.ObjectID IS NULL THEN C.ObjectParentID ELSE CC.ObjectParentID END AS ObjParentID, C.LevelNum FROM C
left join C AS CC ON C.ObjectParentID = CC.ObjectID

Предыдущий запрос некоррекнтый
22 июн 11, 14:37    [10854555]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсия , показать предка определенного уровня  [new]
_ч_
Member

Откуда:
Сообщений: 1446
А если записей номер 2 и 3 не надо знать "дедушку", а надо оставить результаты как на рисунке, то надо добавить еще одно условие в объединение таблиц CC.LevelNum > 0
22 июн 11, 14:41    [10854603]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсия , показать предка определенного уровня  [new]
-=DiM@n=-
Member

Откуда: Москва
Сообщений: 1564
http://www.rsdn.ru/article/db/db_nav1.xml
22 июн 11, 14:51    [10854703]     Ответить | Цитировать Сообщить модератору
 Re: Рекурсия , показать предка определенного уровня  [new]
Andrey1306
Member

Откуда: Киев
Сообщений: 2611
СПасибо
22 июн 11, 14:54    [10854734]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить