(Existem várias abordagens para loops/consultas aninhadas.. uma ideia de mudança de estrutura seria ter uma tabela separada que listasse todos os filhos de cada categoria. -filhos e sub-sub-filhos... como 1 tem filho 2, 2 tem filho 3, 1 tem filho 3, 3 tem filho 5, 1 tem filho 5.. etc.) MAS, para a situação atual..
Uma estrutura de loop pode ser:
Iniciar conjunto de resultados. ||Consulta para todos os IDs de categoria em que pai =0. || Adicione cada um ao array (X). ||Fechar conjunto de resultados.
Para cada id na matriz (X):
- Estabeleça uma nova variável de contagem (z).
-
Estabeleça uma nova matriz de ID filho (Y).
-
Iniciar conjunto de resultados. ||Contagem de consultas * para todos os itens com categoria =id atual x ||Adicionar à variável de contagem (z) ||Fechar conjunto de resultados.
-
Iniciar conjunto de resultados. ||Consulta para todos os IDs de categoria em que pai =ID atual x ||Adicionar tudo ao array de ID filho (Y). ||Fechar conjunto de resultados.
-
while array filho (Y) comprimento> 0
-
id de categoria y =primeiro item na matriz (Y)
-
Iniciar conjunto de resultados. ||Consulta para todos os ids de categoria onde pai =id atual y. ||Adicione tudo ao array de ID filho (Y). ||Fechar conjunto de resultados.
-
Iniciar conjunto de resultados. ||Contagem de consultas * para todos os itens com categoria =id atual y ||Adicionar à variável de contagem (z) ||Fechar conjunto de resultados.
-
remover o primeiro item da matriz (Y)
-
-
continuar enquanto loop
-
Neste ponto, você tem a contagem final de itens (z) para o ID da categoria x... faça algo com isso e continue com o loop for
Fim para loop