Maison > base de données > tutoriel mysql > Comment interroger des données hiérarchiques dans MySQL sans CONNECT BY PRIOR ?

Comment interroger des données hiérarchiques dans MySQL sans CONNECT BY PRIOR ?

Patricia Arquette
Libérer: 2025-01-06 13:09:42
original
949 Les gens l'ont consulté

How to Query Hierarchical Data in MySQL Without CONNECT BY PRIOR?

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 :

  1. Sélectionnez les lignes où ParentId correspond au nœud racine souhaité.
  2. Collectez le Valeurs d'identification des lignes sélectionnées.
  3. Répétez les étapes 1 et 2 pour chacune Id dans la liste collectée.

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
  )
);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal