powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Индексирование таблицы-матрешки
4 сообщений из 4, страница 1 из 1
Индексирование таблицы-матрешки
    #36843764
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!

Есть такая задачка. Есть таблица-матрешка с полями id, parentid ну и набором значимых полей.
Необходимо упорядочить ее таким образом, чтобы дочерние записи располагались следом за
своей родительской.

к примеру, чтоб было яснее:


id parentid something

1 0 г. Москва
2 0 г. Новосибирск
3 0 г. Владивосток
4 1 ул. Кржижановского
5 1 ул. Свободы
6 2 ул. Ленина
.........
107 5 д. 14 стр.1
......
887 6 д. 113


id и parentid - поля Integer
Запись у которой parentid = 0 является корневой

пытаюсь написать
INDEX ON IIF(EMPTY(parentid),STR(id),STR(parentid)+STR(id)) tag tagName

при первой выдаче дает "cannot create key for index tagName"
после второй выдаче почему-то индексирует ...

подскажите решение, пжалуйста
...
Рейтинг: 0 / 0
Индексирование таблицы-матрешки
    #36843816
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_usa__83_чтобы дочерние записи располагались следом за
своей родительской.

к примеру, чтоб было яснее:


id parentid something

1 0 г. Москва
2 0 г. Новосибирск
3 0 г. Владивосток
4 1 ул. Кржижановского
5 1 ул. Свободы
6 2 ул. Ленина
.........
107 5 д. 14 стр.1
......
887 6 д. 113


Так в примере 4-1 расположена НЕ следом за родительской.
По примеру вижу "сортировать записи в порядке по parentid, в пределах одного parentid - по id".

В запросах это будет ORDER BY parentid, id. Индекс для ускорения такой выборки аналогично по (parentid, id).
...
Рейтинг: 0 / 0
Индексирование таблицы-матрешки
    #36843958
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_usa__83_ Есть такая задачка. Есть таблица-матрешка с полями id, parentid ну и набором значимых полей.
Вообще-то это называется дерево. Причем в самом классическом его исполнении.
И оно не пригодно для стандартных способов выборки или сортировки. Такое рекурсивно обрабатывают.

Твой индекс решает проблему только для двухуровневого дерева, третий уровень уже не вписывается. Например (107 5 д. 14 стр.1) у тебя уже не туда куда надо встанет.

Для того чтобы можно было его стандартными средствами обработать (например отсортировать как ты хочешь или выбрать все по г.Москва) необходимо вводить дополнительные поля, по которым будет сортировка идти.
Есть разные способы, ищи алгоритмы работы с деревьями. В простейшем случае завести поле NUM, рекурсивно туда проставить 1,2,3,... а потом по нему сортировать.
...
Рейтинг: 0 / 0
Индексирование таблицы-матрешки
    #36844011
_usa__83_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

М-да, уж насчет того что третий в наследовании не встанет куда надо эт я не подумал ...
Пасиба, уже проще
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Индексирование таблицы-матрешки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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