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%)
|
To proste w przypadku zmiany musisz mieć skrypt, który "zaktualizuje" zapisane relacje.
Lepiej raz na kilka dni odpalać mocny skrypt niż 100 000 razy inny, 100 razy szybszy, który w rzeczywistości pożre 100 000 / 100 = 1000 razy więcej zasobów. Najlepiej aktualizować tylko od modyfikowanego "rodzica" w dół (nie trzeba wszystkiego). Będzie to wykonywane jednorazowo (przy każdej zmianie na szczeblu rodzica). Poza tym zdarzeniem wyciągnięcie relacji nie będzie wymagało ani dodatkowych pytań ani operacji w php. Można tez napisać trigger, który sam będzie pilnował aktualizacji elementów potomnych na podstawie modyfikowanego rodzica i to samoczynnie, kaskadowo w dół aż osiągnie rekordy "najmłodsze" i zakończy działanie. Myślę, że to jest wykonalne, po prostu trigger byłby przy jednej zmianie kaskadowo wyzwalany z góry na dół. To chyba najbezpieczniejszy sposób ochrony integralności danych (w połączniu z kluczami obcymi). Przy śmiganiu z danymi raz w mysql a raz w php, można coś pogubić przy wystąpieniu błędu (chyba, że sie użyje transakcji, a transakcje jak wiadomo, wymagają tabel Innodb i spowalniają prace mysql) |
|
|
|
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
Indeo W takim razie może być jeszcze prościej. Zastanówm... 23.01.2008, 17:34:53
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
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: 23.12.2025 - 22:39 |