Interrogation de données hiérarchiques dans MySQL sans "Connect By Prior"
Dans MySQL, malgré l'absence d'une clause explicite "Connect By Prior" , il est possible de récupérer des données hiérarchiques en utilisant une combinaison de techniques récursives.
Traversée récursive Algorithme
Pour parcourir de manière récursive une table hiérarchique comme tb_Tree, suivez ces étapes :
Ce processus récursif se poursuit jusqu'à ce que tous les nœuds feuilles soient identifiés.
Approche basée sur la profondeur
Si vous connaître la profondeur maximale de l'arborescence, vous pouvez joindre la table à elle-même à plusieurs reprises pour atteindre le niveau le plus profond, puis filtrer tout NULL restant valeurs.
Représentation d'ensemble imbriqué
Vous pouvez également modifier la structure du tableau pour utiliser une représentation d'ensemble imbriqué. Cela implique l'ajout de colonnes supplémentaires pour représenter les limites gauche et droite de chaque nœud dans la hiérarchie.
Exemple de requête pour récupérer les enfants
Pour récupérer tous les enfants d'un nœud spécifique avec Id égal à X, vous utiliseriez la requête suivante :
SELECT * FROM tb_Tree WHERE ParentId IN ( SELECT Id FROM tb_Tree WHERE ParentId = X UNION ALL /* Recursive traversal of children */ SELECT Id FROM tb_Tree WHERE Id IN ( SELECT Id FROM tb_Tree WHERE ParentId = X ) );
Cette requête parcourt récursivement la hiérarchie, collectant toutes les valeurs d'Id associé aux nœuds enfants.
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!