Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка дерева. / 13 сообщений из 13, страница 1 из 1
12.08.2003, 10:05
    #32233623
Geologist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
Дерево реализовано методом Nested sets, описаным Joe Celko. Т.е. таблица имеет следующую структуру:

id
left
right
name
...

Чтобы получить правильное дерево достаточно отсортировать результат по полю left. При сортировк по какому-либо другому полю, соблюдение иерархии, конечно, теряется. Как в данном случае построить запрос, чтобы в результате получить дерево, отсортированное, например, по полю name или любому другому, но с сохранением иерархиии?

Спасибо.
...
Рейтинг: 0 / 0
12.08.2003, 10:41
    #32233665
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
я не все понял... потому не читал о данных технологиях... но... если тебе нужно результат запроса отсортировать по полю, скажем left пиши

SELECT * FROM table WHERE (условия) ORDER BY left
...
Рейтинг: 0 / 0
12.08.2003, 10:42
    #32233666
Geologist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
Поправочка: я не чайник :-)
...
Рейтинг: 0 / 0
12.08.2003, 11:21
    #32233737
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
поправочка: я тоже, и о Вашем кровнея вообще то ничего не говорил...

я сразу сказал что не понял сути вопроса... и ответил так как понял, если ето не то.. изьясняйтесь конкретнее...
...
Рейтинг: 0 / 0
12.08.2003, 11:35
    #32233767
Geologist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
Куда ж ещё конкретней? - Nested Sets, дерево, Joe Celko.

http://www.dbmsmag.com/9603d06.html в конце концов.

А не поняли, так почитайте описание данного метода ;)
...
Рейтинг: 0 / 0
12.08.2003, 12:30
    #32233879
BigHarry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
Geologist - ты думаешь, кто-то захочет тебе помогать - если ты будешь в таком тоне разговаривать?
...
Рейтинг: 0 / 0
12.08.2003, 14:10
    #32234089
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
Geologist
ИМХО это неправильная постановка задачи. У тебя же иерархия задается сортировкой по left, ЛЮБАЯ ДРУГАЯ сортировка - это нарушение иерархии.

Приведи пример дерева, которое у тебя есть и которое ты хочешь получить ?
...
Рейтинг: 0 / 0
12.08.2003, 17:53
    #32234533
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
Прочитал статью , и нигде не увидел зачем надо сортировать, для построения дерева?!
...
Рейтинг: 0 / 0
13.08.2003, 01:10
    #32234773
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
mahoune
бегло просмотрел статью, там вроде такого нет. Где-то на
http://dev.e-taller.net/dbtree была статья, там было нарисовано дерево и проставлены левые и правые смещения. Если хорошо посмотреть, то можно понять, что отсортировав по left получим структуру дерева.
...
Рейтинг: 0 / 0
13.08.2003, 10:16
    #32234972
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
На самом деле, надо понять как человек хочет отсортировать дерево?!
...
Рейтинг: 0 / 0
13.08.2003, 12:33
    #32235218
Konrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
В свое время плотно работал с древовидными структурами, и для правильного расположения ветвей, как было отмечено в теме, необходима сортировка по полю left.
Однако автор не уточнил, для чего ему нужна сортировка по полю name. Если допустить, что автор пишет форум, где ему нужно отсортировать темы по заголовкам (при соблюдении в теме иерархии ответов), то проблему можно решить добавлением в таблицу внешнего ключа name_source, ссылающегося на поле id. В этом случае все подчиненные позиции будут хранить идентификатор своего корневого узла. Запрос будет включать в конструкции ORDER BY.. примерно следующее:
Код: plaintext
... ORDER BY name_source, left


Ваше дерево подразумевает совокупность нескольких корневых узлов (ветвей) и вы хотите соблюсти иерархию внутри каждой ветви, а сами ветви сортировать в произвольном порядке?
Иначе я слабо представляю, как логически можно сохранить иерархию, отсортировав дерево по другому признаку, отличному от признака подчиненности..
...
Рейтинг: 0 / 0
13.08.2003, 13:23
    #32235297
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
На самом деле есть еще другой вариант. Каталог товаров. Есть некая иерархия, но показывать нужно это дерево с учетом иерархии, а при этом все вложенные узлы следующего уровня показывать в алфавитном порядке.

Как я понял, описываемы сдесь метод, работает очень быстро, но, при этом, есть ограничения. т.к. существуют и другие варианты построения деревьев с точки зрения БД. В которых подобную задачку решить проще.
...
Рейтинг: 0 / 0
19.08.2003, 08:45
    #32239745
alex_24
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка дерева.
У...
А я думал вы тут дерево индексов сортируете.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка дерева. / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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