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.
Schreibe einen Kommentar