Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как организовать пере индексацию двевовидной базы / 13 сообщений из 13, страница 1 из 1
05.05.2004, 07:59
    #32506779
Valerik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
Имеется следующая таблица
ID, ParentID, LFT,RGT
мне нужно переиндексировать параметры LFT,RGT
Как это можно реализовать в запросе ?
...
Рейтинг: 0 / 0
05.05.2004, 11:02
    #32507007
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
Переиндексировать как?
...
Рейтинг: 0 / 0
05.05.2004, 21:59
    #32508211
Valerik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
LFT, RGT Написать заново..
...
Рейтинг: 0 / 0
05.05.2004, 22:03
    #32508213
Valerik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
Я сам могу предложить простой способ у меня есть процедура добавки нового пользователся, просто взять всю табличку и как бы зановго ее создать, но только это на мой взгляд не совсем эфективно...
Долговасто получаеться если у вас записей 10000 .
...
Рейтинг: 0 / 0
05.05.2004, 22:31
    #32508223
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
Что это за параметры? Это задача, которую все знают?
...
Рейтинг: 0 / 0
06.05.2004, 05:39
    #32508312
Valerik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
Ну наверное не все,
LFT,RGT и спользуеться для облегчения построения древовидной таблици, то есть зная эти параметры вы можете определить сколько подписанно под данной записью вааабще не зависило от уровня вложенности.
Просто так обьянить
если хотите узнать вот статья на эту тему
http://sdm.viptop.ru/articles/sqltrees.html
...
Рейтинг: 0 / 0
06.05.2004, 09:23
    #32508453
Zenia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
хорошая статья...
...
Рейтинг: 0 / 0
06.05.2004, 09:30
    #32508462
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
Статья хорошая, но как программно расчитывать LFT,RGT?
...
Рейтинг: 0 / 0
06.05.2004, 09:34
    #32508467
Zenia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
ну там вроде все разжовано, только придется процедуры писать на VBA
...
Рейтинг: 0 / 0
06.05.2004, 09:38
    #32508471
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
2 Zenia
Так в процедуре и есть все самое сложное, чего и нет в статье.
...
Рейтинг: 0 / 0
06.05.2004, 10:20
    #32508535
Zenia
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
ну и вправду процедуры заполнения дыр или поиска ошибок очень сложные... но мне понравилась идея. хотя стоитли вообще применять такую структуру
...
Рейтинг: 0 / 0
06.05.2004, 10:29
    #32508559
Sergey_New
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
В некоторых случаях без иерархической структуры не обойтись.
Я вот бьюсь с подобной проблемой.
Пока безуспешно :(
...
Рейтинг: 0 / 0
07.05.2004, 07:56
    #32510009
Valerik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать пере индексацию двевовидной базы
У меня есть идея незнаю будет ли она эфективной..
рссказываю в краце.

имееться таблица допустим с таким деревом
Id, ParetId ,LFT,RGT
1, 0 ,0,0
2,1,0,0
3,1,0,0
4,2,0,0
5,2,0,0
6,3,0,0
7,3,0,0
8,7,0,0
Делаем запрос для подсчета сколько под каждым подписанно в первом уровне.
врезультате получем
1,2
2,2
3,2
4,0
5,0
6,0
7,1
8,0
Сортируем по возрастанию и по номеру.. получаем
8,0
6,0
5,0
4,0
7,1
3,2
2,2
1,2

И скаладываем все подкем подписанны с тем количеством сколько подписанны.
и получаем
8,0
6,0
5,0
4,0
7,1
3,3
2,2
1,7
И сортируем в порядке убывания по коичеству подписанных под ним..
1,7
2,2
3,3
7,1
4,0
5,0
6,0
8,0
И начинаем присваивать значения LFT в том порядке которв они сейчас находятться дл этого находи первого укоторого количество подписанных под ним самое большое в данном лучает это 1, и ставим у него значение LFT=1
так как он первый,
Для других значение LFT расчитываеться по словиям .
if Max( членов превного уроня.RGT) = 0 then
Мой.LFT=Спонсор.LFT+1
else
Мой.LFT=Max( членов превного уроня.RGT) +1
end if
_______________________________________________________
RGT Расчитываються по следующей формуле RGT=мой.LFT+(количество подомной подписанно *2)+1

______________________________
______________________________
Вот что у нас получаеться

1, спонсара нет LFT=1 , RGT=1+(7*2)+1=16
2, Max( членов превного уроня.RGT) = 0 тогда мой.LFT=спонсор.LFT+1 =2, RGT=2+(2*2)+1=7
3, Max( членов превного уроня.RGT) = 7 тогда мой.LFT=Max( членов превного уроня.RGT)+1= 8, RGT=8+(3*2)+1=15
7, Max( членов превного уроня.RGT) = 0 тогда мой.LFT=спонсор.LFT+1 =9, RGT=9+(1*2)+1=12
4, Max( членов превного уроня.RGT) = 0 тогда мой.LFT=спонсор.LFT+1 =3, RGT=3+(0*2)+1=4
5, Max( членов превного уроня.RGT) = 4 тогда мой.LFT=Max( членов превного уроня.RGT)+1 =5, RGT=5+(0*2)+1=6
6,Max( членов превного уроня.RGT) = 12 тогда мой.LFT=Max( членов превного уроня.RGT)+1 =13, RGT=13+(0*2)+1=14
8, Max( членов превного уроня.RGT) = 0 тогда мой.LFT=спонсор.LFT+1 =10, RGT=10+(0*2)+1=11
Врезультате мы получаем
ID,ParetID,LFT,RGT
1, 0,1,16
2, 1,2,7
3, 1,8,15
7, 3,9,12
4, 2,3,4
5, 2,5,6
6, 3,13,14
8, 7,10,11
Полчили то что хотели, только я незна насколько бысто это все будет работать.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как организовать пере индексацию двевовидной базы / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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