Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить записи в древовидной стуктуре? / 6 сообщений из 6, страница 1 из 1
24.07.2002, 19:34:38
    #32038620
Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи в древовидной стуктуре?
Структура таблицы (форумной) выглядит как
MsgID, ReplyMsgID, SentDateTime.

Можно ли сделать запрос таким образом, чтобы его результатом были записи, расположенные в случае корневого сообщения (ReplyMsgID IS NULL) в порядке убывания даты, а дочерние на одном уровне - в порядке возрастания?
...
Рейтинг: 0 / 0
24.07.2002, 19:53:25
    #32038623
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи в древовидной стуктуре?
Может как-нибудь так:

Код: plaintext
order by case when ReplyMsgID is null then -cast(SentDateTime as float) else cast(SentDateTime as float) end
...
Рейтинг: 0 / 0
24.07.2002, 20:30:06
    #32038628
Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи в древовидной стуктуре?
Это, конечно, хорошо, но сама древовидность при этом не выходит :(. Нужно ведь расположить записи в порядке веток, то есть

MsgID ReplyMsgID SentDateTime
1 NULL 21.07.02
2 1 22.07.02
3 2 23.07.02
4 2 24.07.02
5 1 23.07.02
6 NULL 20.07.02

Вот этого-то у меня и не выходит...
...
Рейтинг: 0 / 0
24.07.2002, 21:45:21
    #32038638
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи в древовидной стуктуре?
Дерево вообще в плоский запрос сложно запихнуть, может легче будет рекурсивно во временную таблицу слить данные, а потом из нее читать?
...
Рейтинг: 0 / 0
25.07.2002, 10:10:49
    #32038669
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи в древовидной стуктуре?
А чё я тут писал не подойдёт?
...
Рейтинг: 0 / 0
25.07.2002, 10:58:23
    #32038688
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи в древовидной стуктуре?
Если для хранения древовидной структуры ты используешь классический вариант в чистом виде - т.е. только код записи и ссылка на родителя, то получить требуемую выборку одним запросом никак не получится. Необходимо делать процедуры. Например, как те что предложил SergSuper

Если желаешь получать выборки одним (или ограниченным, конечным количеством) запросом, то необходимо отойти от стандарта хранения древовидных структур.

Либо использовать принципально другой подход (например, дерево, как вариант графа), либо вводить дополнительные поля, облегчающие выборку (например, сквозной порядковый номер или полную иерархию до корневого родителя)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить записи в древовидной стуктуре? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]