J'ai une base de données de forum qui stocke les informations de forum dans une seule colonne. Le forum permet des sous-forums illimités.Requête récursive avec CTE - SUM de colonnes enfants pour un parent donné
Nom de la table - Forums
| ForumID | ParentForumID | Name | Description | TopicCount | ReplyCount | LastPost |
Étant donné un ForumID
comme paramètre que je suis en train de SUM
le TopicCount
et ReplyCount
pour toutes les entrées de l'enfant. J'essaye également de renvoyer la dernière LastPost
, qui est spécifiée comme DATETIME
.
J'ai cherché google et ce forum et je comprends que je devrais utiliser un CTE récursif mais j'ai quelques difficultés à comprendre la syntaxe. Voici mon CTE - travail en cours.
WITH CTE (ForumID, ParentForumID)
AS
(
SELECT ForumID AS Descendant, ParentForumID as Ancestor
FROM forums
UNION ALL
SELECT e.Ancestor
FROM
CTE as e
INNER JOIN CTE AS d
ON Descendant = d.ParentForumID
)
SELECT e.Descendant, SUM(TopicCount) AS topics, SUM(ReplyCount) AS replys
FROM CTE e
WHERE e.Ancestor = 1
1 = Paramètre pour l'ID du forum.
Merci d'avance pour l'aide!
Avez-vous seulement besoin d'enfants ou avez-vous besoin de petits-enfants et d'arrière-petits-enfants, etc.? – cadrell0