Comment Parcourir un Arbre ou de Travailler Avec des données Hiérarchiques dans le Code SQL

Dire que j'ai un employé de la table, avec un enregistrement pour chaque employé de mon entreprise, et une colonne pour le superviseur (voir ci-bas). Je voudrais préparer un rapport qui énumère les noms et le titre de chaque étape de la surveillance de la ligne. par exemple pour la bite robbins, 1d #15, j'aimerais une liste de chaque superviseur dans sa "chaîne de commandement", tout le chemin pour le président, le grand fromage. Je voudrais éviter d'utiliser les curseurs, mais si c'est la seule façon de faire cela, alors c'est ok.

id  fname   lname   title   supervisorid
1   big     cheese  president   1
2   jim     william vice president  1
3   sally   carr    vice president  1
4   ryan    allan   senior manager  2
5   mike    miller  manager 4
6   bill    bryan   manager 4
7   cathy   maddy   foreman 5
8   sean    johnson senior mechanic 7
9   andrew  koll    senior mechanic 7 
10  sarah   ryans   mechanic    8
11  dana    bond    mechanic    9
12  chris   mcall   technician  10
13  hannah  ryans   technician  10
14  matthew miller  technician  11
15  dick    robbins technician  11

Les données réelles ne sera probablement pas plus de 10 niveaux de profondeur...mais je préfère ne pas juste faire 10 en dehors des jointures...j'espérais qu'il y a quelque chose de mieux que cela, et de moins en moins impliqués que les curseurs.

Merci pour toute aide.

Vous pourriez être intéressé à ma question: stackoverflow.com/questions/3471134/...
Vos données a un petit problème, l'id d'enregistrement de 1 ne peut pas avoir supervisorid=1 il va se casser la CTE de la table

OriginalL'auteur Albert | 2011-07-11