Cytat
Mój problem polega na tym że nie wiem jak jednym zapytaniem (lub jak najmniejszą ich ilością i pętlą php) pobrać tylko jedną gałąź drzewa czyli podając ID rodzica pobieram rodzica i jego wszystkich potomków i pod-potomków itd. Jak to wykonać i czy w tym układzie to w ogóle możliwe? Pozdrawiam
Korzystam z tego typu drzewka od dawna z jednego powodu - jest piekielnie szybkie, jeśli chodzi o pobieranie (pobranie całego drzewa, to tylko jedno zapytanie).
Jest jedna różnica między moim a Twoim - w moim przypadku jest jeszcze kolumna depth, która jest tu kluczowa. Jeśli tego nie masz, pobranie dzieci będzie wymagało wywoływania zapytań rekurencyjnie.
Jeśli już utworzysz
depth, działanie algorytmu będzie dość proste: pobierasz
depth dla pożądanego węzła, zapisujesz sobie
position. Po czym szukasz
najbliższego węzła o takim samym
depth sortując po
position. Zapisujesz sobie jego
position.
I wtedy, aby pobrać wszystkie dzieci danego węzła wykonujesz jedno zapytanie. Zadeklarujmy sobie następujące zmienne - węzeł pożadany ma
d1,
p1, węzeł zakańczający
d2 i
p2:
WHERE position >= p1 AND position <= p2 ORDER BY position
Prościej się chyba nie da.