У меня есть база данных форума, которая хранит информацию о форуме в одном столбце.Форум допускает неограниченное количество подфорумов.
Имя таблицы - форумы
| ForumID | ParentForumID | Name | Description | TopicCount | ReplyCount | LastPost |
В качестве параметра ForumID
я пытаюсь SUM
TopicCount
и ReplyCount
длявсе дочерние записи.Я также пытаюсь вернуть последнюю версию LastPost
, которая указана как DATETIME
.
Я искал в Google и на этом форуме и понимаю, что должен использовать рекурсивный CTE, но у меня возникают некоторые трудности с пониманиемсинтаксис.Вот мой CTE - работа в процессе.
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 = параметр для ID форума.
Заранее спасибо за помощь!