Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 06:41 27.06.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема Кое е най-оптималното решение на ...  
Авторsomeone (Нерегистриран)
Публикувано21.03.05 22:54



Здравейте , имам следната таблица:
trees (parent , title) със записи:
parent title
null p0
p0 p1
p1 p2
p2 p3
p3 p4
p4 p5
.............................
като замисъла е да се получи нешо като нишка
p0------------------>p1----------->p2----------->p3------------>p4------------->p5 ...........
parent=null parent=p0 parent=p1 parent=p2 parent=p3 parent=p4 ....
И въпроса ми : Как да обърна нишката по-възможност без рекурсия т.е. искам да получа:
parent title
null p5
p5 p4
p4 p3
p3 p2
p2 p1
p1 p0

p5----------------->p4--------------->p3----------->p2------------>p1------------>p0 ...........
parent=null parent=p5 parent=p4 parent=p3 parent=p2 parent=p1 ......



Тема Re: Кое е най-оптималното решение на ...нови [re: someone]  
Авторkrachev (Нерегистриран)
Публикувано22.03.05 13:09



Здрасти, значи хрумна ми този вариант (използвам T-SQL диалекта понеже ти не уточни базата)

insert into #trees (parent , title)
select title, parent from trees;

delete from #trees where title is null;

update #trees set title = parent, parent = null
where not exists (select title from #trees t1 where t1.title = #trees.parent )

delete from trees;

insert into trees select * from #trees;



Тема Re: Кое е най-оптималното решение на ...нови [re: someone]  
Автор NDeu (динозавър)
Публикувано22.03.05 13:12



Може и да не съм те разбрал, но си мисля, че искаш да реализираш списък:
parent title
null p0
p0 p1
.........
pi pj
.......
p(n-1) pn

Ако добавиш и:
pn null
ще получиш лесен начин за откриване на края на списъка и съответно добавяне/премахване на елемент отпред и отзад.( Кеф ти FIFO, кеф ти LIFO)
Ако се замислиш, ще разбереш и че този списък е двусвързан, което ще рече, че лесно можеш да се движиш по него и в двете посоки. (Реализацията на Next/Prev е елементарна)

Тогава, отговора на въпроса ти: "Как да обърна нишката по-възможност без рекурсия т.е...." е :
Че той е обърнат



Тема Re: Кое е най-оптималното решение на ...нови [re: someone]  
Автор AcidMemory ()
Публикувано22.03.05 14:06



кажи за каква база данни иде реч (щото оракъл, примерно, има connect by нещица, с които лесно се вадят такива неща)

иначе, принципно (поне в някои случаи и аз бих подходил така), можеш да си денормализираш пътя (лесно се поддържа) в едно допълнително поле и да ползваш него (т.е. примерно id_p0<delimiter>id_p1<delimiter>id_p2..... , което лесно се парсва в последствие, а и лесно си отговаряш на разни въпроси, които те обикновено те интересуват в такива дървета)



Тема Re: Кое е най-оптималното решение на ...нови [re: someone]  
Авторsomeone (Нерегистриран)
Публикувано22.03.05 16:19



Здравейте , базата е mysql-4.0.20 , и цялата работа е следната :
Имам дърво без някакви ограничения за дълбочината му (и все пак надали ще надхвърли дълбочина 20-25) и целта ми е , когато посоча произволен node от дървото той да стане root т.е. нещо като "увисване на дървото" , което първоночално ми изглеждаше доста сложно , но в последствие се установи , че трябва се обърне само пътя от root-а до въпросния node и от там идва питанката ми.



Тема Re: Кое е най-оптималното решение на ...нови [re: someone]  
Автор mr.vain (пътник 57)
Публикувано22.03.05 20:45



Само да попитам - защо си против рекурсията? Според мен в случая именно рекурсивен цикъл е най-лесния подход.

Има три вида хора. Част от проблема, част от решението и част от пейзажа.


Тема Re: Кое е най-оптималното решение на ...нови [re: someone]  
Автор тoшo (да бе да)
Публикувано23.03.05 05:00







Хората са мислили, мислили...

Редактирано от тoшo на 23.03.05 05:02.




Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.