我有这个递归CTE的一个小问题,它工作正常,除非我有一个没有根可读权限的用户意味着没有这个元素的条目。因此,如果我在树中的叶子上使用权限的用户运行此查询,此查询的级别部分将无法正常工作。递归cte sql与层次级别
它将显示出真实的水平层次结构例如6但对他来说其顶端第一可读元件所以它应该是1
WITH Tree
AS (
SELECT
id,
parent,
0 AS Level,
id AS Root,
CAST(id AS VARCHAR(MAX)) AS Sort,
user_id
FROM SourceTable
WHERE parent IS NULL
UNION ALL
SELECT
st.id,
st.parent,
Level + 1 AS Level,
st.parent AS Root,
uh.sort + '/' + CAST(st.id AS VARCHAR(20)) AS Sort,
st.user_id
FROM SourceTable AS st
JOIN Tree uh ON uh.id = st.parent
)
SELECT * FROM Tree AS t
JOIN UserTable AS ut ON ut.id = t.user_id AND ut.user_id = '141F-4BC6-8934'
ORDER BY Sort
水平如下
id level
5 0
2 1
7 2
4 2
1 2
6 1
3 2
8 2
9 3
当用户现在只拥有阅读权8和9时,CTE的等级为2,id 8为3,但是如果之前没有人,我需要id 8等级1
你能显示一些数据和预期的结果吗? – Kaf
水平如下 ID, 水平5,0 2,1 7,2 4,2 1,2 6,1 3,2 8,2 9,3 当用户现在只有阅读权利ID 8和9从cte的水平停留在2为id 8和3为id 9,但我需要为id 8级别1,如果之前没有人 – Mikatsu
thx为后来更新相应现在 – Mikatsu