![]() |
![]() |
![]()
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. |
|
|
![]() |
![]()
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. |
|
|
![]()
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?? |
|
|
![]()
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. |
|
|
![]()
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 |
|
|
![]()
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:
to powinno dac ci cala galez drzewa od id 4 w gore to bedzie jakos tak:
dobry opis tego drzewa masz w ksiazce : antywzorce jezyka sql |
|
|
![]()
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? |
|
|
![]()
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. |
|
|
![]()
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/ ?
|
|
|
![]()
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. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 616 Pomógł: 84 Dołączył: 29.11.2006 Skąd: bełchatów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:37 |