我正在建立一個論壇。現在我想創建一個查詢,返回每個帖子上的反應次數。反應被定義爲某個帖子下的所有帖子。我想用CTE來實現這一點。如何使用通用表達式(CTE)創建遞歸計數器?
所以車費我有這樣的:
;WITH Reaction(Cnt, ParentId) AS
(
SELECT COUNT(*), ParentId
FROM dbo.Post
GROUP BY ParentId
)
SELECT ISNULL(Cnt, 0), Post.*
FROM dbo.Post Post
LEFT JOIN Reaction
ON Reaction.ParentId = Post.PostId
這將列出所有「直接」的帖子。現在我必須讓這個查詢計算整個樹,但是我被卡住了。我一直在閱讀CTE,我知道你可以做遞歸查詢,但我不知道如何解決創建遞歸查詢的問題。
你可以添加你已經嘗試過的代碼(遞歸)嗎? MSDN CTE文檔對於遞歸CTE非常有用,所以它會更有用,可以幫助您瞭解哪裏出錯,而不僅僅是編寫您的代碼 – gbn 2011-12-27 10:04:18
我也添加了我的失敗 – 2011-12-27 10:09:15
其他例外我已經遇到的是:「外連接不允許在遞歸公用表表達式'反應'的遞歸部分。」和「語句終止,最大遞歸100在語句完成之前已經耗盡。」 – 2011-12-27 10:10:41