Yoo!
Håller på att testa lite CTE (Common Table Expressions) i sql server 2005.
http://msdn2.microsoft.com/en-us/library/ms186243.aspx
http://64.233.183.104/search?q=cache:EzSjCcmdVFsJ:www.4guysfromrolla.com/webtech/071906-1.shtml+cte+recursive+"sql+server+2005"&hl=sv&gl=se&ct=clnk&cd=5
Det verkar ju riktigt fiffigt, en fundering bara, jag tycker sorteringen blir fel.
Ex.
WITH KeyList (KeywordId, ParentKeywordId, Keyword, Level)
AS
(
-- Anchor member definition
SELECT k.KeywordId, k.ParentKeywordId, k.Keyword, 0 AS Level
FROM Keywords AS k
WHERE k.ParentKeywordId IS NULL
UNION ALL
-- Recursive member definition
SELECT k.KeywordId, k.ParentKeywordId, k.Keyword, Level + 1
FROM Keywords AS k
INNER JOIN KeyList AS d
ON k.ParentKeywordId = d.KeywordId
)
-- Statement that executes the CTE
SELECT KeywordId, ParentKeywordId, Keyword, Level
FROM KeyList
Med koden får jag resultatet:
1 NULL guyg 0
2 1 fgdfgdfg 1
3 1 guygu 1
4 2 hgvhgv 2
5 2 cfcgfcgf 2
6 4 fbvvnbv 3
Sorteringen blir alltså på Level, men jag skulle vilja få det så här:
1 NULL guyg 0
2 1 fgdfgdfg 1
4 2 hgvhgv 2
6 4 fbvvnbv 3
5 2 cfcgfcgf 2
3 1 guygu 1
Sorteringen är nu på en tråds helhet, dvs. kedjan bryt inte (eller hur man nu ska förklara).
Nån som kan nått powerplayertrick för detta? :)
