Ich habe ein kleines Problem mit diesem rekursiven CTE, es funktioniert gut, außer wenn ich einen Benutzer ohne root lesbare Rechte habe bedeutet, keinen Eintrag für dieses Element. Wenn ich diese Abfrage für einen Benutzer mit Rechten nur auf den Blättern in der Struktur ausführen, wird der Ebenenteil dieser Abfrage nicht korrekt funktionieren.Rekursive Cte sql mit für Hierarchieebene
zeigt es die reale Ebene Hierarchie zum Beispiel 6, aber es ist das obere erste lesbare Element für ihn so sollte es 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
das Niveau sein wird wie folgt
id level
5 0
2 1
7 2
4 2
1 2
6 1
3 2
8 2
9 3
Wenn ein Benutzer jetzt nur Leserechte auf ID 8 und 9 hat, bleibt die Stufe von CTE 2 für ID 8 und 3 für ID 9, aber ich brauche für ID 8 Stufe 1, wenn niemand vor
Können Sie einige Daten und erwartete Ergebnisse zeigen? – Kaf
der Pegel ist wie folgt: id, Ebene 5, 0 2, 1 7, 2 4, 2 1, 2 6, 1 3, 2 8, 2 9, 3 wenn ein user hat jetzt nur leserechte an id 8 und 9 das level von cte bleibt bei 2 für id 8 und 3 für id 9 aber ich brauche für id 8 level 1 wenn es noch keinen gibt – Mikatsu
thx für die hind aktualisiert jetzt – Mikatsu