Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Drzewo depesza - pobieranie drzewa
acidm
post
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Witam !

Zaznajamiam się właśnie z drzewkami w mysql i mam takie pytanie..
Jak za pomocą jednego zapytania pobrac cale drzewo depesza wraz z strukturą w taki sposób aby odtworzyć całą strukturę w php np. do postaci tablicy wielowymiarowej?

Widziałem przykłady na postgressa wykorzystujące funkcje czy procedury do stworzenia struktury w postaci sciezek ale to rozwiązanie nie przypadło mi do gustu.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
alegorn
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


wyszukaj na tym forum, wątków o drzewkach, sam w kilku się rozpisywałem, więc wiem że takowe istnieją (IMG:style_emoticons/default/wink.gif)

drzewko, moim skromnym zdaniem trzeba dobierać wg potrzeb, nie ma jednego optymalnego rozwiązania.


j.
Go to the top of the page
+Quote Post
acidm
post
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Przegłądałem posty na forum i nie znalazłem w nich odpowiedzi na moje pytanie ...
W wynikach z google widziałem metode depesza która w wyniku końcowym zwracałe strukture drzewek w postaci ścieżki , wiec tak się zastanawiam że zamiast drzewka depesza można by zimplementować drzewko ip...
Lub drzewko depesza w którym można odtworzyć pełną strukturę w php jednym zapytaniem ,jeśli tak się da oczywiście??
Go to the top of the page
+Quote Post
alegorn
post
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


uf.
Drzewko depesza to takie z parent_id? przedstaw szerzej o czym piszesz.
jeśli tak, to nie ma takiego polecenia sql, które by dało rade za jednym razem wyciągnąć cala ułożoną w strukturę.

jeśli potrzebujesz coś takiego - to drzewa typu nested set. wyciągnięcie posortowanej struktury jednej gałęzi czy całego drzewka jest tam bardzo uproszczone (w zamian masz bardziej skomplikowane wszelkie modyfikacje)

powiedz, co chcesz osiągnąć, a może uda się jakoś bardziej ci podpowiedzieć.

jeśli chodzi Ci tylko o teorie - to ja znam jakieś cztery typy drzewek, każde z nich ma swoje zalety i wady. kwestia umiejętności wybrania odpowiedniego algorytmu, dla konkretnego problemu, ewentualnie niekiedy hybrydy powyższego, ale to już świadomie trzeba się na to decydować.

j.
Go to the top of the page
+Quote Post
acidm
post
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Drzewko depesza jest rozdzielone na dwie tabele , pierwsza tabel ma pola id,nazwa a w drugiej tabeli są pola id_rodzica,id_dziecka,głębokość.

Zna ktoś jekieś proste przykłady na odtworzenie struktury calego dzrewka???Najlepiej łopatologiczne bo już zeza dostaje :|
Czy cheć obróbki takiego zapytania na drzewo w php z mojej strony jest wogóle dobrym ppomysłem ??Zastanawiam się czy nie powinna się tym zajmować baza?

A teraz z innej beczki jest możliwość w drzewku IP poukładać strukturę calego drzewa bez uzycia rekurencji odnośnie pola id_parent ?
(drzewko ip o które mi chodzi sklada się z id, nazwy, id_rodzica, ip, głębokości )

PS ogółem potrzebuje drzewka prostego w implementacji i modyfikacji

Ten post edytował acidm 31.01.2013, 11:56:25
Go to the top of the page
+Quote Post
alegorn
post
Post #6





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


czyli coś a'la tabela domknięcia. chyba.
ciekawe rozwiązanie, pozwala na użycie jednego elementu w wielu miejscach drzewa, chyba jedyna taka struktura.
ja osobiście nie korzystam z tej struktury ale:

pobranie potomnych dla konkretnego elementu to:
  1. SELECT k.*
  2. FROM komentarze k
  3. JOIN sciezka s ON k.id_komentarza = s.id_child
  4. WHERE s.id_parent =4

to powinno dac ci cala galez drzewa od id 4

w gore to bedzie jakos tak:
  1. SELECT k.*
  2. FROM komentarze k
  3. JOIN sciezka s ON k.id_komentarza = s.id_parent
  4. WHERE s.id_child = 6



dobry opis tego drzewa masz w ksiazce : antywzorce jezyka sql
Go to the top of the page
+Quote Post
acidm
post
Post #7





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


hehe to akurat wiem (IMG:style_emoticons/default/smile.gif)

Tylko jak po pobraniu tych wszystkich wezłow potomnych danego elementu odtworzyć strukturę ,tak aby nie wykonywac już węcej zapytan?
Go to the top of the page
+Quote Post
alegorn
post
Post #8





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


nie uzywalem tego, wiec nie chce sie wypowiadac.
ale skoro masz lvl i parent_id, to zawsze w php funkcją rekurencyjną jestes wstanie to ogarnac.

Go to the top of the page
+Quote Post
mar1aczi
post
Post #9





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Coś w ten deseń: http://piotrekkr.info/2009/08/me-vs-tree-c...-w-mysql-i-php/ ?
Go to the top of the page
+Quote Post
alegorn
post
Post #10





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


w podanym linku masz hybrydę nested set i metody opartej na parent_id.

coś takiego charakteryzuje się całkiem niezłym pobieraniem drzewa, ale jest dość skomplikowane przy aktualizowaniu.
dla metody z parent_id, nie ma opcji by łatwo wyciągnąć drzewo. chyba, że zakładamy iż drzewko ma np. max 4 poziomy, i więcej ich nie będzie. wtedy da się na sztywno porobic odpowiednią ilość joinow.

j.
Go to the top of the page
+Quote Post
memory
post
Post #11





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

Ostrzeżenie: (0%)
-----


http://diabl0.gazeta.ie/2009/03/drzewo-dep...ql-ciag-dalszy/

http://4programmers.net/Z_pogranicza/Zaawa..._drzewa_w_MySQL
Go to the top of the page
+Quote Post
alegorn
post
Post #12





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


ok, kursory w procedurach - ok, to da rade, ale czy to jest łatwe..?

tak jak pisałem wcześniej, trzeba poznać tych kilka rozwiązań, i świadomie wybierać najlepsze dla konkretnego zadania.
j.
Go to the top of the page
+Quote Post
acidm
post
Post #13





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

Ostrzeżenie: (0%)
-----


Cytat(alegorn @ 1.02.2013, 13:48:19 ) *
ok, kursory w procedurach - ok, to da rade, ale czy to jest łatwe..?

Właśnie (IMG:style_emoticons/default/smile.gif)

NestedSets mnie nie interesują (aktualnie , może kiedyś(IMG:style_emoticons/default/smile.gif) ) ale dzieki za linki (IMG:style_emoticons/default/smile.gif)

Tak na marginesie czy funkcje skladwane mogą wyciagac dane z bazy ? Pytam bo jak przerabiam przykladzik
http://diabl0.gazeta.ie/2009/03/drzewo-dep...ql-ciag-dalszy/
to w mysql mi zwraca błąd ?

Pomijając drzewko depesza (najpierw muszę się zaznajomić z procedurami i funkcjami skladowanymi bo jestem z nich zielony :] )
macie może pomysł jak w drzewku ip :
http://www.binboy.org/mysql/articles/575/D..._metoda_IP.html

na wyciągniętych już elegancko danych ,odtworzyc je .Podany tam przyklad stosuje ip do wyciągniecia wezla z potomkami co sprawdza się pieknie:) ale już przetwarzane rekordy sklejane są rekunrencyjnie po id_parent w php ...
W przypadku zagnieżdżeń do 100 jest ok , ale co dalej..
Maci może pomysł jak to zmienić ?
Do dyspozycji sa pola ip, id_rodzica ,id,głębokość.
Może dało by się ułożyć takie drzewko w listy zagnieżdżone prze iterację(IMG:style_emoticons/default/questionmark.gif) ?
I jeszcze jedno powiedźcie mi proszę czy jakbym zmienił typ pola ip z CHAR na TEXT to spadek wydajniości byłby znaczny?
Pytam ponieważ pole ip ma typ CHAR a co za tym idzie samo w sobie nie pozwoli na zbyt wiele zagnieżdżeń,więc trzeba by zmienic na typ TEXT ale jeśli to oznacza duży spadek wydajności to trzeba będzie ograniczyć się do pola CHAR->czyli mniejszej ilości zagłebień w drzewie , i wtedy nie ma się co przejmować ograniczeniami rekurencji w php.

Ten post edytował acidm 1.02.2013, 20:27:13
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:37