I ont un tableau:Comment s'inscrire JOINT récursivement dans SQL?
Series ======== ID SeriesName ParentSeriesID
Une série peut être une série "root", (ParentSeriesID
est égal à 0 ou null) ou il peut avoir un parent. Une série peut également avoir plusieurs niveaux, par exemple son parent a un parent, qui a un parent, etc.
Comment puis-je interroger la table pour obtenir une série par son ID et toutes les séries descendant '?
Jusqu'à présent, j'ai essayé:
SELECT child.*
FROM Series parent JOIN Series child ON child.ParentSeriesID = parent.ID
WHERE parent.ID = @ParentID
Mais cela ne retourne le premier niveau des enfants, je veux que le nœud parent et tous les noeuds « en aval ». Je ne suis pas sûr de savoir comment progresser d'ici.
J'ai modifié votre requête pour la faire fonctionner, mettez-la dans mon edit à votre question. Merci de votre aide! –
Tout moyen de le faire sur un serveur SQL non MS SQL? J'ai besoin d'un moyen plus standard sans utiliser de CTE. –
@goku_da_master - Cela dépend de ce que vous voulez dire. Le même code devrait fonctionner correctement sur Postgres, Oracle et DB2. Les expressions de table communes font partie de la spécification SQL et sont donc implémentées par plusieurs fournisseurs. Cependant, il semble que vous demandiez comment obtenir la même chose sur une base de données qui ne supporte pas les CTE tels que MySQL ou MS Access. La réponse dépendra du produit. – Thomas