(Има множество подходи към вложени цикли/заявки.. идеята за промяна на структурата би била да има отделна таблица, която изброява всички деца от всяка категория.. и се уверете, че тя има не само непосредствените деца, но също така има под -деца и под-поддеца... като 1 има дете 2, 2 има дете 3, 1 има дете 3, 3 има дете 5, 1 има дете 5... и т.н..) НО, за сегашната ситуация..
Една структура на цикъла може да бъде:
Стартирайте набора от резултати. ||Запитване за идентификатори на всички категории, където родител =0. || Добавете всеки към масив (X). ||Затваряне на набора от резултати.
За всеки идентификатор в масива (X):
- Установете нова променлива за броене (z).
-
Създайте нов масив от идентификационни номера на дъщерите (Y).
-
Стартирайте набора от резултати. ||Брой на заявките * за всички елементи с категория =текущ идентификатор x ||Добавяне към променлива за броене (z) ||Затваряне на набора от резултати.
-
Стартирайте набора от резултати. ||Запитване за идентификатори на всички категории, където родител =текущ идентификатор x ||Добавяне на всички към дъщерния идентификационен номер (Y). ||Затваряне на набора от резултати.
-
докато дължина на дъщерния масив (Y)> 0
-
идентификатор на категория y =първият елемент в масива (Y)
-
Стартирайте набора от резултати. ||Запитване за идентификатори на всички категории, където родител =текущ идентификатор y. ||Добавяне на всички към дъщерния идентификационен масив (Y). ||Затваряне на набора от резултати.
-
Стартирайте набора от резултати. ||Брой на заявките * за всички елементи с категория =текущ идентификатор y ||Добавяне към променлива за броене (z) ||Затваряне на набора от резултати.
-
премахнете първия елемент от масива (Y)
-
-
продължи цикъл while
-
В този момент имате крайния брой артикули (z) за категория идентификатор x... направете нещо с него, след което продължете с цикъла for
Край за цикъл