Я нашел эту функцию SQL, которая выполняет итерации по таблице, и находит ParentID , код работает, за исключением случаев, когда я помещаю в него предложение where, которое не работает во вновь созданном столбце.Если я не использую предложение where, оно выдает Expr1 в качестве корня дерева, чего я и хочу, но я не могу наложить на него условие.
Может ли кто-нибудь мне помочьрешить эту проблему?
ALTER FUNCTION dbo.fn_Root
(
@PostID int
)
RETURNS int
AS
BEGIN
DECLARE @R int
SELECT @R = CASE WHEN ParentPostID = 0 THEN PostID
ELSE dbo.fn_Root(ParentPostID)
END
FROM Post
WHERE PostID = @PostID
RETURN @R
END
SELECT PostID, Title, dbo.fn_Root(PostID) AS Expr1
FROM Post WHERE Expr1 = 5