Maison > base de données > tutoriel mysql > Comment les requêtes récursives peuvent-elles récupérer efficacement les ancêtres dans les données hiérarchiques de MySQL ?

Comment les requêtes récursives peuvent-elles récupérer efficacement les ancêtres dans les données hiérarchiques de MySQL ?

DDD
Libérer: 2024-12-04 19:55:12
original
979 Les gens l'ont consulté

How Can Recursive Queries Efficiently Retrieve Ancestors in MySQL's Hierarchical Data?

Requêtes récursives pour la récupération de données hiérarchiques dans MySQL

Lorsque vous traitez des données hiérarchiques dans une base de données, il devient souvent nécessaire de récupérer des informations sur plusieurs niveaux de relations. Dans MySQL, les requêtes récursives offrent une solution puissante pour cette tâche.

Considérons l'exemple suivant : Imaginez un simple arbre généalogique représenté dans un tableau à deux colonnes : "a" et "b", où "a" représente le parent et «b» désigne l'enfant. Si nous voulons retrouver tous les ancêtres (parents, grands-parents, etc.) d'un individu donné, comment pourrions-nous l'aborder ?

Dans MySQL, nous pouvons exploiter des requêtes récursives pour parcourir la structure arborescente et récupérer les ancêtres d'un nœud spécifique. Disons que nous voulons trouver les ancêtres de l'individu avec une valeur « b » de 5. La requête suivante accomplirait cela :

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 utilise une sous-requête récursive pour établir une relation entre le « a » (senderid) et 'b' (receiverid). La requête interne initialise la variable @id au nœud souhaité (5) puis utilise la requête externe pour joindre les lignes suivantes de manière récursive jusqu'à ce qu'il n'y ait plus d'ancêtres.

En exécutant cette requête, nous obtiendrions le résultat suivant :

person
1
2
3
4

Ce résultat fournit la hiérarchie complète menant au nœud avec une valeur 'b' de 5, y compris le nœud initial lui-même et ses parents, grands-parents et bientôt. Ainsi, les requêtes récursives dans MySQL constituent un outil puissant pour parcourir les données hiérarchiques et récupérer des informations détaillées sur plusieurs niveaux de relations.

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