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

Откуда:
Сообщений: 125
в таблице есть три поля номер объекта(id), номер родительского объекта(parentid), имя объекта(name) нужно выбирать объекты пока его parentid<>2
выбор первого объекта
select id, parentid, name from objects where id=95957
27 окт 03, 08:44    [393647]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дереву объектов  [new]
AlexeyU
Member

Откуда: Vladivostok
Сообщений: 72
Вопрос не понятен.
Можно более подробно?

не думаю что вам нужно это:

select id, parentid, name from objects where parentid!=2


--
---
Alexey
27 окт 03, 09:05    [393668]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дереву объектов  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2505
Попробую ткнуть пальцем в небо, авось получится.
Если Вам нужно получить список всех родителей элемента дерева, до тех пор пока ID родителя <> 2, то это делается обычным циклом.
Select @item_id = parent_id 

From MyTable
Where @item_id = id


Выход из цикла будет, когда
@item_id = 2 OR @@rowcount = 0
27 окт 03, 10:04    [393745]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дереву объектов  [new]
Kravec
Member

Откуда:
Сообщений: 125
а как его потом вывести
27 окт 03, 10:06    [393754]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дереву объектов  [new]
Kravec
Member

Откуда:
Сообщений: 125
параметр один первый id остальное берется из одной таблицы
27 окт 03, 10:08    [393762]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по дереву объектов  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
Кого? Куда?

Весь список? Пиши во временную таблицу в цикле, а потом из нее SELECT.
Есть еще рекурсивный вариант, но это уже отдельная тема...:-)
27 окт 03, 10:08    [393763]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить