(Esistono numerosi approcci ai cicli / query nidificati.. un'idea di modifica della struttura sarebbe quella di avere una tabella separata che elenchi tutti i figli di ogni categoria.. e assicurarsi che non abbia solo i figli immediati, ma abbia anche il sub -figli e sub-sotto-figli... come 1 ha un figlio 2, 2 ha un figlio 3, 1 ha un figlio 3, 3 ha un figlio 5, 1 ha un figlio 5.. ecc.) MA, per la situazione attuale..
Una struttura ad anello potrebbe essere :
Avvia set di risultati. ||Query per tutti gli ID di categoria dove parent =0. || Aggiungi ciascuno all'array (X). ||Chiudi set di risultati.
Per ogni ID nell'array (X):
- Stabilire una nuova variabile di conteggio (z).
-
Stabilisci un nuovo array di ID figlio (Y).
-
Avvia set di risultati. ||Conteggio query * per tutti gli elementi con categoria =ID corrente x ||Aggiungi alla variabile di conteggio (z) ||Chiudi set di risultati.
-
Avvia set di risultati. ||Richiesta per tutti gli ID di categoria dove genitore =ID corrente x ||Aggiungi tutto all'array di ID figlio (Y). ||Chiudi set di risultati.
-
mentre la lunghezza dell'array figlio (Y)> 0
-
ID categoria y =primo elemento nell'array (Y)
-
Avvia set di risultati. ||Query per tutti gli ID di categoria dove genitore =ID corrente y. ||Aggiungi tutto all'array di ID figlio (Y). ||Chiudi set di risultati.
-
Avvia set di risultati. ||Conteggio query * per tutti gli elementi con categoria =ID corrente y ||Aggiungi alla variabile di conteggio (z) ||Chiudi set di risultati.
-
rimuovi il primo elemento dall'array (Y)
-
-
continua durante il ciclo
-
A questo punto hai il conteggio finale degli elementi (z) per l'id della categoria x... fai qualcosa con esso, quindi continua con il ciclo for
Fine per ciclo