Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V  < 1 2 3 >  
Reply to this topicStart new topic
> drzewka sqlowe
chmolu
post
Post #21





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

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


Cytat
To jest calego drzewka w gore:)

Jak to w górę?? Skoro 1% to pobiera po kolei w dół:
1.2
1.2.4
1.3
Go to the top of the page
+Quote Post
aleksander
post
Post #22





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


no i o to hwao chodzi:)
Go to the top of the page
+Quote Post
kirkor0
post
Post #23





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.04.2004

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


A gdyby pobrał path i potem explodem podzielił przez sparator "." do tablicy $x. Później wszystko do drógiej tablicy foreachem.
Wyglądało by to tak $tab[$x[0]][$x[1]][$x[2]] itd. ...

Wartość danego wpisu byłaby w $tab[1][5]['value']...

I tak wszystkie wiersze przelecieć i mamy wszystko w tablicy, a potem z wyświetleniem, to nie ma problemu?

Co o tym myślicie?
Go to the top of the page
+Quote Post
hwao
post
Post #24


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




a ile to bedzie zapytan do bazy danych policz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Jak jedno, to ok
Go to the top of the page
+Quote Post
kirkor0
post
Post #25





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.04.2004

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


jedno zapytanie, które zwraca wszystkie wiersze

ja przelatuje te wiersze i wszystko wrzucam do jednej tablicy

wyświetlić tablicę to nie problem

Ale jak z szybkością i wydajnością... Duże dane w jednej tablicy?
No, ale przecież jakby ktoś chciał tylko fragment drzewka to sobie użyje like 1.5.5%
Go to the top of the page
+Quote Post
sf
post
Post #26





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


ze sciezka zapisywana jako string jest taki problem, ze trzeba napisac mechanizm, ktory bedzie to poprawial gdy usuniemy lub przesuniemy dana kategorie...

co do exportu drzewa do pliku txt.. nie widze sensu, nie wiem jak to ma cokolwiek przyspieszyc... przeciez zapytanie mozna cachowac, albo modul, cala strone, kto komu co pasuje
Go to the top of the page
+Quote Post
kirkor0
post
Post #27





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.04.2004

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


Co do przenoszenia to mgłobybyć UPDATE z odpowiednim wyrażeniem regularnym: np. mamy 5.2.6.1. I jeżeli chcemy przesunąć ostatnią grupę x.6.1 do np. 5.3.x to wystarczyłoby zmienić tylko 2 na 3...
Ale jeżeli już istnieje 5.3? Wtedy mógłby wystąpić konflikt. Więc najpierw trzebabyłoby znaleźć ostatnią podgałęź 5.3 i wszystkie podgałęzi 5.2 zmienić na kolejne, ale to byłoby niepraktyczne i należałoby zmienić we wszystkich istniejących tabelach (5.2.6 na 5.2.6+x, a potem przenieść do 5.3).
Go to the top of the page
+Quote Post
aleksander
post
Post #28





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


by the way, jezeli chcesz uzystac parenta w drzewkach IP wystarczy obiac wszystko od ostatniej kropki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) prawda ze proste?(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

kirkor: nie moze istniec dwa identyczne pathe, poniewaz cyferki to unikalne ID dla kazdej galezi
Go to the top of the page
+Quote Post
kirkor0
post
Post #29





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.04.2004

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


Cytat(aleksander @ 2005-09-03 23:48:02)
kirkor: nie moze istniec dwa identyczne pathe, poniewaz cyferki to unikalne ID dla kazdej galezi

hmmm... a czy ja powiedziałem, że będą dwa identyczne pathe... (IMG:http://forum.php.pl/style_emoticons/default/blink.gif) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Strzałek
post
Post #30





Grupa: Przyjaciele php.pl
Postów: 384
Pomógł: 6
Dołączył: 11.09.2004
Skąd: Grodzisk Mazowiecki

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


zainteresowałem się ostatnio trochę drzewkami i troszkę poszperałem. Może komuś przyda się:

http://forum.webcity.pl/index.php?act=ST&f=15&t=2461&st=0 Temat na WebCity o drzewkach.
http://www.intelligententerprise.com/00102...equestid=291501
http://www.zyxist.com/artykuly.php/drzewa_w_php_i_mysql
Go to the top of the page
+Quote Post
Bartech
post
Post #31





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 29.08.2003
Skąd: Poznań

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


Osobiście uważam temat drzewka za trudny i zdradliwy, sam siedziałem około 10 dni nad stworzeniem własnego systemiku. Jeżeli ktoś jest zainteresowany, chętnie podzielę się doświadczeniami a nawet skrypcikiem.

Moje dzewko posiada:
- nie ogranoczoną ilość poziomów
- możliwość sortowania wewnątrz gałęzi
- mozliwość pełnego edytowania nazw w dowolnym miejscu
- możliwość usówania z uwzględnieniem zmian w sortowaniu

Nie ma natomiast:
- przenoszenia gałęzi
- usówania całych gałęzi

Pozdrawiam.
Zainteresowanych proszę o wiadomość na PRIVA
Go to the top of the page
+Quote Post
chmolu
post
Post #32





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

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


A nie lepiej byłoby podzielić się tym ze wszystkimi? Po to właśnie jest ta dyskusja.

ps: pisze się usuwania (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
teles
post
Post #33





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 29.10.2003
Skąd: Warszawa

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


Moja wersja drzewka robi wszystko co trzeba, przesuwa całe gałęzie, kasuje podgałęzie itd....
korzystam z trzech pól

Id, Id_parent, Order

ale wyświetlanie jest rekurencyjnami zapytaniami (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) , co nie rozwiązuje probelmu tego temtatu.

Sam jestem ciekaw czy jest jakies sensowne rozwiazanie, jak jest to chetnie je zaimplementuje.
Go to the top of the page
+Quote Post
bela
post
Post #34


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


teles pełno, wystarczy poszukać
Go to the top of the page
+Quote Post
Bora
post
Post #35





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


Cytat(hwao @ 2005-09-03 10:13:20)
Cytat
Co do pobierania drzewa, to chyba będzie to coś takiego:
  1. SELECT *
  2.  
  3. FROM tree WHERE path LIKE '1%' ORDER BY path.


To jest calego drzewka w gore:)

a w dol to tak jak ja napisalem chyba najlepiej (mam metode)

to ja proponuje:
  1. SELECT *
  2. FROM tree WHERE LEFT(path, 2) = '1.' ORDER BY path.

powinno być szybciej niż LIKE
Go to the top of the page
+Quote Post
SongoQ
post
Post #36





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
ale wyświetlanie jest rekurencyjnami zapytaniami

Uzywasz funkcji bazy danych?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Bo w php to juz nie bedzie rekurencja (przynajmniej taka sztuczna)
Go to the top of the page
+Quote Post
hawk
post
Post #37





Grupa: Zarejestrowani
Postów: 521
Pomógł: 0
Dołączył: 3.11.2003
Skąd: 3city

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


Zamiast Nested Sets polecam Nested Intervals. Odpada problem z wstawianiem. Linka kiedyś podawałem, potem zgubiłem, a całość jest trudna do zrozumienia i być może Oracle-only.

A w ogóle to można zostać przy ID parenta i zrobić CONNECT BY (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Go to the top of the page
+Quote Post
bela
post
Post #38


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


hawk, link jest w komentarzach do artykułu o drzewkach z wortalu
btw zyjesz ;D
Go to the top of the page
+Quote Post
bigZbig
post
Post #39





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Nested sets (zbiory zagnieżdżone) to ciekawy mechanizm nastawiony na mozliwie szybki odczyt drzewa. Dodawanie i modyfikowanie niestety wiaze sie z koniecznoscia aktualizacji indeksow przewaznie wiekszosci rekordow w tabeli. Nie objecie takich operacji transakcja grozi utrata spujnosci struktury.

Osobiscie eksperymentujac z ta metoda oprocz indeksow lewy i prawy zachowalem rowniez parent_id w celu ewentualnej rekurencyjnej odbudowy srtuktury. Dodalem tez pole level co ulatwilo mi wyswietlanie ograniczonej liczby zaglebien wybranej galezi. Dodalem tez pole position (mozna by je nazwac order) gdyz jego wartosc wskazuje na miejsce danego liscia lub galezi w ramach swojego poziomu. Dzieki temu wybiegowi zmiana pozycji w ramach poziomu wymaga jedynie aktualizacji wartosci position elementow tej samej galezi i na tym samym poziomie, a nie przebudowy calych indeksow lewy prawy. Poza tym w przypadku wystapienia niespojnosci struktury drzewa, ponowna przebudowa oparta o id, nie powoduje zmiany kolejnosci elementow w ramach poziomu

Na moim drzewie mozna:
- pobierac pojedynczy element, cale galezie,
- pobierac okreslona liczbe poziomow z drzewa lub wybranej galezi,
- pobierac przodkow wybranego elementu,
- pobrac przodkow o wybrana liczbe leweli w gore,
- dodawac nowe elementy,
- usuwac liscie i cale galezie,
- usuwac rodzica zachowujac jego potomkow,
- przesuwac liscie w ramach danego poziomu lub calego drzewa,
- przesuwac cale galezie w gore, dol, w prawo oraz w lewo
- odbudowac strukture drzewa w razie "powiklan"

Pisze artykul na ten temat (jakos nie mam czasu aby go dokonczyc) Jak mi uruchomia PHP5 na serwerze to wrzuce demo do przetestowania i dorzuce wspomniany artykul.

Mysle ze zrobilem fajny mechanizm jednak zdaje sobie sprawe z jego niedoskonalosci wynikajacych glownie ze wspomnianych juz wyzej trudnosci przy dodawaniu elementu lub modyfikacji struktury. Przy budowie np. forum o ograniczonej liczbie zaglebien, czestej aktualizacji tresci wybralbym raczej inne rozwiazanie - Drzewa Depesza, albo IP (tak na marginesie zastanawiam sie w polu jakiego typu w bazie trzymane sa id oraz sciezka danego elementu - w varchar czy raczej text?)
Co do zrzucania struktury drzewa do pliku to ja ograniczylbym sie jedynie (zresta podejrzewam, ze oto wlasnie chodzi) do zrzucenia id i parent_id i na tej podstawie konstruowal zapytanie do bazy danych.
Go to the top of the page
+Quote Post
Levabul
post
Post #40





Grupa: Zarejestrowani
Postów: 197
Pomógł: 0
Dołączył: 11.07.2005

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


Nie rozumiem trochę zastosowań drzewa. Jak w jednej tabeli można przechowywać zarówno newsy, jak i artykuły i bóg wie co jeszcze ? Przecież każdy z tych przykładów potrzebuje innych danych. Można by wprawdzie w drzewie dodać pole table mówiąze w jakiej tabeli znajduje się dany news, artykuł itp., ale mija się to z ideą drzewa :/
Go to the top of the page
+Quote Post

3 Stron V  < 1 2 3 >
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: 22.10.2025 - 22:16