Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> struktura drzewa
pero
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 17.02.2007

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


witam
mam taka tabele

kategoria
--------
id_kategoria (PK)
id_rodzica (FK)
nazwa

wiecie moze jak za pomoca jednego zapytania sql wyswietlic wysztkie podkategorie ktorych rodzicem jest kategoria o id=1 ?
szukalem na forum i zwykle ludzie pisza zeby drzewa a php obslugiwac. ja wolalbym to zalatwic w sql.
macie moze jakis pomysl jak to rozwiazac ?

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!

W bazie trzymaj, id elementu, id rodzica, ścieżkę, i level. Podam przykład:

id parent path level name
1 0 0 0 główny
2 1 1 1 pierwszy poziom
3 2 1.2 2 drugi

Level to w sumie ilość kropek w ścieżce + 1 więc nawet nie musisz tego trzymać. Całą gałąź pobierasz przez LIKE. Na przykład gałąź od elementu id 2: path LIKE 2% Oczywiście musisz używać CONCAT, żeby dodawać kropki przed i po ścieżce bo Ci złapie trochę "nie tych" elementów.

Ścieżka w bazie 1.2.3
CONCAT('.', path, '.') LIKE .1.2.3.% OR path = 1.2.3

Jest to sposób banalny w implemantacji. Wszystkie operacje (dodawanie, przenoszenie całych gałęzi, usuwanie gałęzi...) są proste i przyjemne. Rozwiązanie jest nawet, można powiedzieć, wydajne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


Pozdrawiam!
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 16:35