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
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
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!