Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
s_alexander Гость
|
Добавлено: Чт Июн 27 2002 11:30 Заголовок сообщения: Господа, как составить запрос... |
|
|
Задача: нужно из таблицы с полями ID, PARENTID, NAME (в ней хранится дерево а ля левая часть проводника в виндах) выбрать все записи в таблицу (дерево строить не нужно, просто все выбрать в таблицу) в таком же порядке как и в виндовом проводнике (в левой части). Т.е. первая запись - корень, далее все листья, но после каждого листа, если у него есть дети, то следуют они и т.д. Использовать только ANSI SQL. Ни каких хранимых процедур и т.п. Возможно ли это? И если возможно, то как? |
|
Вернуться к началу |
|
|
ded
Зарегистрирован: 27.06.2002 Сообщения: 4
|
Добавлено: Чт Июн 27 2002 13:47 Заголовок сообщения: Re: Господа, как составить запрос... |
|
|
Насколько я понял данные последующего поля уточняют предыдущие. Например: ID PARENTID NAME 1 1 1 1 1 2 1 1 3 1 2 1 2 1 1 2 2 1
Или проще говоря - образуют иерархию ID | PARENTID | NAME Тогда, если я правильно понял, то достаточно просто сгруппировать по каждому полю и задать порядок сортировки.
select id, parentid, name from table group by id, parentid, name sort by id, parentid, name asc;
Либо я не так понял вопрос. ЗЫ Кстати у листьев не бывает порожденных узлов. |
|
Вернуться к началу |
|
|
s_alexander Гость
|
Добавлено: Чт Июн 27 2002 14:36 Заголовок сообщения: Re: Господа, как составить запрос... |
|
|
Не совсем верно. ID - уникальное поле. И так просто этот запрос не составишь. Я не зря говорил про левую часть проводника. Возьмем ее за пример: где ID - номер каждого элемента (т.е. каталога). PARENTID - номер родителя для элемент (если у диска C ID равен 5, то у каталога "Мои документы", лежащего на диске C PARENTID будет равен 5). Ну а NAME понятно (в данном примере - это имя каталога). Таким образом мне нужно выбрать из таблицы все эти каталоги в том же порядке следования как и в проводнике со всеми открытыми узлами (порядок я имею в виду сверху вниз). При этом дерево строить не нужно, нужно просто выбрать их все в таблицу. |
|
Вернуться к началу |
|
|
|