SQL: erstellen von anzeigen, eine rekursive Abfrage?
Frage: ich habe eine Ansicht, die ich herleiten wollen aus einer rekursiven Abfrage.
Die Abfrage ist die gleiche Struktur wie diese hier:
http://forums.asp.net/t/1207101.aspx
Und stellt eine treeview als eine geordnete Datensatz.
Wie kann ich eine Ansicht erstellen, die Folgendes tut:
;WITH Tree (ID, [NAME], PARENT_ID, Depth, Sort) AS
(
SELECT ID, [NAME], PARENT_ID, 0 AS Depth, CONVERT(varchar(255), [Name]) AS Sort FROM Category
WHERE PARENT_ID = 0
UNION ALL
SELECT CT.ID, CT.[NAME], CT.PARENT_ID, Parent.Depth + 1 AS Depth,
CONVERT(varchar(255), Parent.Sort + ' | ' + CT.[NAME]) AS Sort
FROM Category CT
INNER JOIN Tree as Parent ON Parent.ID = CT.PARENT_ID
)
-- HERE IS YOUR TREE, Depths gives you the level starting with 0 and Sort is the Name based path
SELECT ID, [NAME], PARENT_ID, Depth, Sort FROM Tree
ORDER BY Sort
- Könnten Sie besser dran, erstellen einer inline-Tabellenwertfunktion, die diese unterstützt. Dann können Sie parametrieren die Parent_Id, dass Sie an Sie übergeben.
- Es ist besser, es zu tun in einer Sicht, und vielleicht fügen Sie der main-root-uid als eine Spalte, und die Abfrage, die die Sicht aus einer gespeicherten Prozedur. Tabellenwertfunktionen werden langsam, wenn Sie haben viele Daten, weil Sie erstellen temporäre Tabellen im Speicher, ausgelagert wenn der Speicher nicht ausreicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sollte so einfach wie:
ORDER BY
. Eine der Gefahren von cut-n-paste-coding! 🙂 Ich werde aktualisieren Sie Sie entsprechend.