(Il existe de nombreuses approches pour les boucles/requêtes imbriquées... une idée de changement de structure serait d'avoir une table séparée qui répertorie tous les enfants de chaque catégorie... et assurez-vous qu'elle n'a pas seulement les enfants immédiats, elle a aussi le sous -enfants et sous-sous-enfants... comme 1 a l'enfant 2, 2 a l'enfant 3, 1 a l'enfant 3, 3 a l'enfant 5, 1 a l'enfant 5.. etc..) MAIS, pour la situation actuelle..
Une structure de boucle pourrait être :
Démarrer le jeu de résultats. ||Requête pour tous les identifiants de catégorie où parent =0. || Ajoutez chacun au tableau (X). ||Fermer le jeu de résultats.
Pour chaque identifiant dans le tableau (X) :
- Établir une nouvelle variable de comptage (z).
-
Établir un nouveau tableau d'ID enfant (Y).
-
Démarrer le jeu de résultats. ||Nombre de requêtes * pour tous les éléments avec la catégorie =identifiant actuel x ||Ajouter à la variable de comptage (z) ||Fermer le jeu de résultats.
-
Démarrer le jeu de résultats. ||Requête pour tous les identifiants de catégorie où parent =identifiant actuel x ||Ajouter tout au tableau d'identifiants enfants (Y). ||Fermer le jeu de résultats.
-
tandis que la longueur du tableau enfant (Y)> 0
-
identifiant de catégorie y =premier élément du tableau (Y)
-
Démarrer le jeu de résultats. ||Requête pour tous les identifiants de catégorie où parent =identifiant actuel y. ||Ajouter tout au tableau d'ID enfant (Y). ||Fermer le jeu de résultats.
-
Démarrer le jeu de résultats. ||Nombre de requêtes * pour tous les éléments avec la catégorie =identifiant actuel y ||Ajouter à la variable de comptage (z) ||Fermer le jeu de résultats.
-
supprimer le premier élément du tableau (Y)
-
-
continuer pendant la boucle
-
À ce stade, vous avez le nombre final d'éléments (z) pour l'identifiant de catégorie x... faites quelque chose avec, puis continuez avec la boucle for
Fin de la boucle