Ho un piccolo problema con questo CTE ricorsivo, funziona bene tranne quando ho un utente senza diritti di root readable significa nessuna voce per questo elemento. Quindi, se eseguo questa query su un utente con diritti solo sulle foglie all'interno dell'albero, la parte del livello di questa query non funzionerà correttamente.cq sql ricorsivo con per livello gerarchico
mostrerà il vero livello di gerarchia ad esempio 6 ma il suo il primo elemento leggibile in alto per lui, così dovrebbe essere 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
il livello è la seguente
id level
5 0
2 1
7 2
4 2
1 2
6 1
3 2
8 2
9 3
Quando un utente ora ha solo i diritti di lettura su id 8 e 9 il livello da CTE rimane a 2 per id 8 e 3 per id 9 ma ho bisogno di id 8 livello 1 se non c'è nessuno prima
Puoi mostrare alcuni dati e risultati attesi? – Kaf
il livello è il seguente id, livello 5, 0 2, 1 7, 2 4, 2 1, 2 6, 1 3, 2 8, 2 9, 3 quando un l'utente ora ha solo i diritti di lettura di id 8 e 9 il livello da cte rimane a 2 per id 8 e 3 per id 9 ma ho bisogno di id 8 livello 1 se non c'è nessuno prima – Mikatsu
thx per l'hind aggiornato di conseguenza ora – Mikatsu