2010-11-13 23 views
1

Je souhaite récupérer le chemin d'un seul nœud dans une base de données hiérarchique où seul l'ID du nœud parent est stocké en tant que référence. Quelqu'un pourrait-il me donner une question ou un conseil sur la façon d'écrire une requête (idéalement la première option - je suis un noob MySQL) afin que tous les titres de noeud dans le chemin du noeud final soient donnés dans une table générée?Récupère l'arborescence d'un seul élément dans la base de données hiérarchique MySQL

id name   depth 
10 Top level  0 
22 Second level 1 
34 3rd level  2 
43 End node  3

Je veux utiliser ces données pour créer sur de ces listes "vous êtes ici" comme:

Home > Forums > Stuffs > ... > Topics

Merci pour toute aide,

James

Répondre

2

Cette n'est possible que pour un nombre fixe de niveaux, car il n'y a pas de récursivité en SQL.

Vous pouvez convertir votre structure de données à partir du "adjacency list" model you have to the so-called "nested sets" model. Avec ce modèle, une requête "trouver le chemin vers le haut" est possible.

+0

Merci pour cela. J'ai essayé d'utiliser quelques modèles différents en vain. J'ai réussi à le réparer avec une fonction PHP. Ce n'est pas idéal mais ça marche. Je vais essayer de le réparer à une date ultérieure. – Bojangles