Maison >base de données >tutoriel mysql >Comment les procédures stockées peuvent-elles parcourir efficacement une arborescence de nomenclature hiérarchique dans MySQL ?

Comment les procédures stockées peuvent-elles parcourir efficacement une arborescence de nomenclature hiérarchique dans MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 14:39:15270parcourir

How Can Stored Procedures Efficiently Traverse a Hierarchical BOM Tree in MySQL?

Requête récursive MySQL pour la traversée d'arbres

Problème :

Supposons que vous ayez une table de nomenclature (BOM) avec éléments et leurs identifiants parents. Le but est de récupérer une représentation hiérarchique des éléments sous la forme d’une arborescence. L'utilisation d'une requête typique à un seul niveau ou d'une fonction récursive peut s'avérer inefficace.

Solution :

Le langage SQL dans MySQL ne prend pas en charge les requêtes récursives de manière native. Pour surmonter cette limitation, on peut créer des procédures stockées (SP) personnalisées pour obtenir une fonctionnalité de traversée d'arborescence.

SP proposés :

Les SP suivants peuvent être utilisés pour parcourir le Arborescence BOM :

  1. GetParentIDByID : Trouve l'ID parent d'un élément spécifié.
  2. GetAncestry : Récupère la lignée ancestrale d'un élément jusqu'à un niveau spécifié.
  3. GetFamilyTree : Génère une représentation hiérarchique de l'ensemble de l'arborescence de nomenclature à partir d'une racine donnée item.

Utilisation :

Pour utiliser les SP, suivez ces étapes :

  1. Créez les SP dans votre base de données MySQL en utilisant le code SQL fourni.
  2. Appelez le SP GetFamilyTree avec l'ID de l'élément racine comme paramètre.
  3. Le SP renverra une représentation hiérarchique de l'arborescence.

Exemple :

Par exemple, si vous avez une nomenclature table avec les données suivantes :

+----+------+
| item | parent |
+----+------+
| 1  | 0    |
| 2  | 1    |
| 3  | 1    |
| 4  | 3    |
| 76 | 3    |
+----+------+

L'appel de GetFamilyTree(1) renverra la hiérarchie suivante représentation :

[
  {
    "item": 1,
    "children": [
      {
        "item": 2,
        "children": []
      },
      {
        "item": 3,
        "children": [
          {
            "item": 4,
            "children": []
          },
          {
            "item": 76,
            "children": []
          }
        ]
      }
    ]
  }
]

Cette représentation fournit toutes les branches enfants de l'arborescence, permettant une récupération efficace des relations entre les éléments.

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