Comment s'inscrire de manière récursive dans SQL?
J'ai une table:
Série ======== ID SeriesName ParentSeriesID
Une série ne peut être une "racine" de la série, (ParentSeriesID
est 0 ou null) ou il peut avoir un Parent. Une série peut aussi être à plusieurs niveaux, c'est à dire son Parent est un Parent qui a un Parent, etc.
Comment puis-je interroger la table pour obtenir une Série par son ID et TOUS les descendants de la Série ?
Pour l'instant j'ai essayé:
SELECT child.*
FROM Series parent JOIN Series child ON child.ParentSeriesID = parent.ID
WHERE parent.ID = @ParentID
Mais cela retourne uniquement le premier niveau des enfants, je veux le nœud parent, et tous les "en aval" des nœuds. Je ne suis pas sûr de la façon de progrès à partir d'ici.
source d'informationauteur Neil N | 2010-08-12
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez SQL Server 2005+, vous pouvez utiliser common table expressions
Pour plus d':
Requêtes Récursives À L'Aide D'Expressions De Table Communes
Je viens d'améliorer le travail de Thomas. Si vous avez besoin pour obtenir la profondeur de la hiérarchie et de l'obtention de la parentid voici le code.
C'était presque la même chose avec Thomas.
C'est tout. Je sais que c'est trop tard mais j'espère que toute personne qui rencontre ce qui peut les aider. Merci Thomas pour le code d'origine. 🙂
Faire usage de
CTE
fonctionnalité disponible dans slq serveur à partir de 2005 pour recurisve requêteVous pouvez voir exemple ici :
SQL SERVER – Exemple Simple de l'expression de table commune Récursive