Drzewka w PHP [rzseattle] |
Drzewka w PHP [rzseattle] |
14.04.2004, 10:19:48
Post
#1
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
-------------------- |
|
|
18.04.2004, 13:29:00
Post
#2
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 22.04.2003 Skąd: Żory / K-ce Ostrzeżenie: (0%) |
Jeśli już masz tak gmatwać to może rozważ użycie nested sets (left i right marker) rozszerzonych o informację o głębokości danego rekordu względem korzenia drzewa(depth). Dzięki temu masz wszystkie zalety nested sets i rozwiązania Depesza w jednym. Rozbudowa podobnie trudna jak w przypadku Twojego pomysłu, ale szybkość odczytu nieporównywalnie większa.
Pobrać wszystkie dzieciaki, wnuki, prawnuki itd. wybranego rekordu: [sql:1:9b52cbd8af]SELECT * FROM tree WHERE lft BETWEEN $my[lft] AND $my[rgt][/sql:1:9b52cbd8af] Pobrać tylko dzieciaki: [sql:1:9b52cbd8af]SELECT * FROM tree WHERE lft BETWEEN $my[lft] AND $my[rgt] AND depth = $my[depth]+1[/sql:1:9b52cbd8af] Pobrać n-tego dzieciaka wiedząc że istnieje (assert($my[rgt]-$my[lft]>1)): [sql:1:9b52cbd8af]SELECT * FROM tree WHERE lft = $my[lft]+$n[/sql:1:9b52cbd8af] Pobrać nagłówki 120 postów z najnowszych wątków z forum o strukturze drzewiastej (tnąc w razie potrzeby wątki nie mieszczące się na stronie) : [sql:1:9b52cbd8af]SELECT * FROM forum ORDER BY lft DESC LIMIT 120[/sql:1:9b52cbd8af] Ze względu na prostotę działa hiper-super-szybko. Jedynym minusem jest użycie nieraz poprzedzającego zapytania (lub od razu inner joina), gdyż trzeba znać namiary rodzica (lft, rgt, depth) aby móc znaleźć jego dzieci. -------------------- Gadu-Gadu: 3909164
|
|
|
Wersja Lo-Fi | Aktualny czas: 30.04.2024 - 16:00 |