Maison >base de données >tutoriel mysql >Comment récupérer des catégories imbriquées de manière récursive avec une seule requête SQL ?

Comment récupérer des catégories imbriquées de manière récursive avec une seule requête SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-07 11:56:02831parcourir

How to Fetch Nested Categories Recursively with a Single SQL Query?

Récupération de catégories imbriquées avec une seule requête

Dans un site Web avec des articles organisés en sections hiérarchiques, la récupération efficace de ces sections est cruciale. Cette question explore comment récupérer des catégories de manière récursive avec une seule requête SQL à l'aide de PHP et MySQL.

Pour construire une structure arborescente récursive en PHP, l'approche suivante est proposée :

  • Créez un tableau de références de nœuds :

    • Interrogez la base de données pour toutes les catégories, y compris leurs identifiants, noms et identifiants parents.
    • Créez un tableau associatif où chaque nœud représente une catégorie et ses enfants sont représentés par un tableau vide.
  • Remplir l'arborescence :

    • Parcourez le tableau de nœuds.
    • Pour chaque nœud, vérifiez si son ID parent existe dans la liste des nœuds.

      • Si le parent existe, ajoutez le nœud actuel comme un enfant dans la liste des enfants du parent.
      • Sinon, ajoutez le nœud actuel en tant que nœud de niveau supérieur dans l'arborescence.
  • Supprimer les tableaux temporaires :

    • Une fois l'arborescence terminée, supprimez la liste des nœuds et supprimez toutes les références.

Cette approche vous permet de construire un arbre hiérarchique en PHP pur, offrant une récupération de données plus rapide et plus efficace par rapport aux requêtes itératives dans MySQL. L'arborescence finale sera stockée dans le tableau $tree, avec chaque catégorie et ses enfants représentés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn