powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить записи в древовидной стуктуре?
6 сообщений из 6, страница 1 из 1
Как получить записи в древовидной стуктуре?
    #32038620
Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структура таблицы (форумной) выглядит как
MsgID, ReplyMsgID, SentDateTime.

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

Код: plaintext
order by case when ReplyMsgID is null then -cast(SentDateTime as float) else cast(SentDateTime as float) end
...
Рейтинг: 0 / 0
Как получить записи в древовидной стуктуре?
    #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
Как получить записи в древовидной стуктуре?
    #32038638
Фотография VVG_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерево вообще в плоский запрос сложно запихнуть, может легче будет рекурсивно во временную таблицу слить данные, а потом из нее читать?
...
Рейтинг: 0 / 0
Как получить записи в древовидной стуктуре?
    #32038669
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чё я тут писал не подойдёт?
...
Рейтинг: 0 / 0
Как получить записи в древовидной стуктуре?
    #32038688
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если для хранения древовидной структуры ты используешь классический вариант в чистом виде - т.е. только код записи и ссылка на родителя, то получить требуемую выборку одним запросом никак не получится. Необходимо делать процедуры. Например, как те что предложил SergSuper

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

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


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