Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 32 Dołączył: 24.05.2007 Ostrzeżenie: (0%)
|
Powiedzmy ze mam tabele kategorie a w niej pola id i parent
id|parent 1 |0 2 |1 3 |1 4 |2 5 |4 6 |4 7 |5 no i powiedzmy ze pobralem element o id 7, jak najlepiej wykonac zapytanie zeby zwrocilo mi wszystkich rodzicow w poprawnej kolejnosci, tj 5,4,2,1 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%)
|
W takim razie może być jeszcze prościej. Zastanówmy sie praktycznie: skąd biorą sie kolejne wpisy w takiej hierarchicznej strukturze? Prawdopodobnie ktoś dodawał kolejne gałęzie dysponując w danym momencie wiedzą o "rodzicach" pozycji, którą właśnie tworzy (nic nie bierze sie z nikąd (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Zatem można w tej tabeli dodać kolejne pole o nazwie path w którym zapisywalibyśmy kolejno ścieżki genealogiczne kolejnych elementów. Przykładem są systemy plików - po katalogach tez trzeba chodzić rekurencyjnie ale tabela alokacji plików na danej partycji ma gotowe powiązania co jest gdzie. Podobną rolę spełniałoby to pole w tabeli. Może wygląda to dziwnie i nieelegancko ale zauważ, że nawet gdyby trzeba było przed dodaniem każdej kolejnej pozycji w strukturze odpytać "historię rodziców" to to odpytanie odbywałoby się tylko raz dla każdego elementu! Taka ściąga (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Rzeczywiste bazy danych są czasem dalekie od tych akademickich, ale dzięki temu czasem są szybsze.
|
|
|
|
deirathe Jak najoptymalniej wykonac zapytanie SQL 23.01.2008, 16:34:46
Indeo To ciekawe zagadnienie topologiczne i przykład jak... 23.01.2008, 16:53:30
SirZooro Poczytaj te artykuły:
Managing Hierarchical Data i... 23.01.2008, 16:59:06
deirathe No wlasnie to drugie rozwiazanie jest malo optymal... 23.01.2008, 17:05:52
deirathe to jest dość dobry pomysł, ale co w wypadku gdy ak... 24.01.2008, 16:53:22
bim2 Można spróbować pobrać to do tablicy $array[... 24.01.2008, 17:59:45
deirathe czyli pobrać całą tabelę do tablicy? 24.01.2008, 23:01:06
bim2 Tak, dziś podrzucę kod, ale teraz jest za wcześnie... 25.01.2008, 00:40:47
Indeo To proste w przypadku zmiany musisz mieć skrypt, k... 25.01.2008, 12:46:56
deirathe "chili", robimy sobie tabele:
id|path|na... 25.01.2008, 13:29:21
bim2 [PHP] pobierz, plaintext <?phppublic function s... 25.01.2008, 16:23:43 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 04:46 |