Maison > base de données > tutoriel mysql > Comment puis-je récupérer tous les ancêtres d'un nœud dans une base de données hiérarchique MySQL à l'aide de requêtes récursives ?

Comment puis-je récupérer tous les ancêtres d'un nœud dans une base de données hiérarchique MySQL à l'aide de requêtes récursives ?

DDD
Libérer: 2024-12-13 10:29:18
original
326 Les gens l'ont consulté

How Can I Retrieve All Ancestors of a Node in a MySQL Hierarchical Database Using Recursive Queries?

Requêtes hiérarchiques dans MySQL

Lorsque vous traitez des données hiérarchiques, la possibilité de récupérer les parents, les grands-parents et d'autres ancêtres pour un nœud donné devient crucial. Cet article explique comment y parvenir dans MySQL à l'aide d'une requête récursive.

Étant donné une table avec une relation parent-enfant représentée par les colonnes a et b, nous pouvons utiliser la requête suivante pour trouver tous les ancêtres d'un objet spécifique. nœud, quelle que soit leur profondeur :

SELECT @id := (SELECT senderid FROM mytable WHERE receiverid = @id) AS person
FROM (
  SELECT @id := 5
) vars
STRAIGHT_JOIN
mytable
WHERE @id IS NOT NULL
Copier après la connexion

Cette requête commence par une sous-requête qui définit la variable @id sur le nœud fourni (5 dans cet exemple). La requête externe rejoint ensuite la table sur cette variable, parcourant effectivement la hiérarchie vers le haut jusqu'à ce qu'il n'y ait plus de parents. La syntaxe STRAIGHT_JOIN garantit que la requête se déroule de manière descendante.

Le résultat de la requête sera une liste d'ancêtres pour le nœud donné, avec l'ancêtre racine répertorié en premier :

1
2
3
4
Copier après la connexion

En comprenant cette approche, les développeurs peuvent naviguer efficacement dans les structures hiérarchiques dans MySQL, ce qui leur permet d'effectuer des requêtes complexes sur des données avec des relations parent-enfant. Ceci est particulièrement utile pour les applications allant des arbres généalogiques aux hiérarchies organisationnelles.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal