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 :
Utilisation :
Pour utiliser les SP, suivez ces étapes :
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!