Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Господа, как составить запрос...

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
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 понятно (в данном примере - это имя каталога).
Таким образом мне нужно выбрать из таблицы все эти каталоги в том же порядке следования как и в проводнике со всеми открытыми узлами (порядок я имею в виду сверху вниз). При этом дерево строить не нужно, нужно просто выбрать их все в таблицу.
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...