(Istnieje wiele podejść do zagnieżdżonych pętli / zapytań... pomysłem na zmianę struktury byłoby posiadanie oddzielnej tabeli zawierającej wszystkie dzieci z każdej kategorii... i upewnienie się, że ma ona nie tylko bezpośrednie dzieci, ale także podrzędne -children i sub-sub-children... jak 1 ma dziecko 2, 2 ma dziecko 3, 1 ma dziecko 3, 3 ma dziecko 5, 1 ma dziecko 5. itd.) ALE, w obecnej sytuacji...
Jedna struktura pętli może wyglądać tak:
Uruchom zestaw wyników. ||Zapytanie o wszystkie identyfikatory kategorii, gdzie rodzic =0. || Dodaj każdy do tablicy (X). ||Zamknij zestaw wyników.
Dla każdego identyfikatora w tablicy (X):
- Ustal nową zmienną zliczającą (z).
-
Utwórz nową podrzędną tablicę identyfikatorów (Y).
-
Uruchom zestaw wyników. ||Zapytanie o liczbę * dla wszystkich elementów z kategorią =bieżący identyfikator x ||Dodaj do zmiennej liczenia (z) ||Zamknij zestaw wyników.
-
Uruchom zestaw wyników. ||Zapytanie o wszystkie identyfikatory kategorii, gdzie rodzic =bieżący identyfikator x ||Dodaj wszystkie do tablicy identyfikatorów podrzędnych (Y). ||Zamknij zestaw wyników.
-
podczas gdy długość tablicy podrzędnej (Y)> 0
-
identyfikator kategorii y =pierwsza pozycja w tablicy (Y)
-
Uruchom zestaw wyników. ||Zapytanie o wszystkie identyfikatory kategorii, gdzie rodzic =bieżący identyfikator y. ||Dodaj wszystko do podrzędnej tablicy identyfikatorów (Y). ||Zamknij zestaw wyników.
-
Uruchom zestaw wyników. ||Zapytanie o liczbę * dla wszystkich elementów z kategorią =bieżący identyfikator y ||Dodaj do zmiennej liczenia (z) ||Zamknij zestaw wyników.
-
usuń pierwszy element z tablicy (Y)
-
-
kontynuuj podczas pętli
-
W tym momencie masz ostateczną liczbę elementów (z) dla identyfikatora kategorii x... zrób coś z tym, a następnie kontynuuj pętlę for
Koniec pętli