Maison  >  Article  >  base de données  >  Comment récupérer des catégories récursives dans une seule requête MySQL ?

Comment récupérer des catégories récursives dans une seule requête MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-10 19:41:02688parcourir

How to Retrieve Recursive Categories in a Single MySQL Query?

Récupération récursive de catégories avec une seule requête MySQL

Dans les applications Web, l'organisation du contenu en catégories hiérarchiques est courante. Une structure de catégories complexe, telle qu'une arborescence, nécessite un traitement spécialisé pour la récupération. Cet article explore le moyen le plus efficace de récupérer des catégories récursives avec une seule requête MySQL.

La construction de l'arborescence des catégories en PHP à l'aide de références optimise le processus. Une requête récupère les catégories et leurs identifiants parents, qui sont stockés dans un tableau associatif ($nodeList). Le tableau est structuré pour créer des références hiérarchiques où le parent de chaque nœud apparaît dans sa clé « parent ».

La construction de l'arborescence se produit dans le code suivant :

foreach ($nodeList as $nodeId => &$node) {
    if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
        $tree[] = &$node;
    } else {
        $nodeList[$node['parent']]['children'][] = &$node;
    }
}

Cette boucle parcourt les nœuds , et si un nœud n'a pas de parent ou si le parent n'existe pas dans le tableau, le nœud est ajouté au tableau $tree. Sinon, le nœud est ajouté en tant qu'enfant au tableau « enfants » de son parent.

Le résultat est une structure arborescente hiérarchique stockée dans le tableau $tree, chaque nœud contenant des références enfants. Cette approche à requête unique est nettement plus rapide que l'utilisation de requêtes MySQL récursives, même pour les grandes arborescences de catégories.

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