Comment puis-je générer une hiérarchie chemin dans SQL qui conduit à un nœud donné?

Dans mon MS SQL 2008 R2 base de données, j'ai ce tableau:

TABLE [Hierarchy]
[ParentCategoryId] [uniqueidentifier] NULL,
[ChildCategoryId] [uniqueidentifier] NOT NULL

J'ai besoin d'écrire une requête qui va générer tous les chemins qui mènent à un Nœud donné.

Permet de dire ça, j'ai l'arbre suivant:

A
-B
--C
-D
--C

Qui est stockée en tant que:

NULL | A
A    | B
A    | D
B    | C
D    | C

Lors de la demande de Chemins pour le C, je voudrais revenir deux chemins (écrit plus ou moins comme ceci):

A > B > C,
A > D > C
La version de SQL Server que vous utilisez? Le mot-clé de recherche que vous êtes à la recherche pour des Requêtes Hiérarchiques. Je ne suis pas trop familier avec SQLServer, mais ce serait une tâche triviale dans Oracle à l'aide de la connect by et start with opérateurs, et comme je sais que les nouvelles versions de sql server ont déjà la plupart des fonctionnalités que l'Oracle a
Ah, j'ai oublié de mentionner la version, je vais l'ajouter à la question, mais c'est MS SQL 2008 R2
Découvrez de table commune récursive des expressions ou tout simplement des requêtes récursives. Il y a des tonnes d'exemple ici sur DONC
Côté bar; Essayé de deviner pourquoi vous voulez savoir tous les parcours disponibles entre les nœuds. Deviné, c'était peut-être de sorte que vous pouvez calculer le chemin le plus court. Si c'est le cas: l'Algorithme de Dijkstra

OriginalL'auteur Dugan | 2013-01-09