Ik ben es aan de klooi gegaan met SQL2005 en die common table expressions zijn wel fijn voor het werken met recursieve data. Ze zijn vast ergens anders ook handig voor, maar daar gaat het nu ff niet om. Wat ik eigenlijk wil, is een treeview weergeven en de bron daarvoor moet een XML documentje zijn.
Dus ik dacht, kom, laat ik XML uit de database gaan trekken. SQL2005 kan recursieve data uitpoepen en kan XML uitpoepen, dus een combinatie van beide kan ook vast wel. Ik kwam daardoor uit op de volgende query:
Ik krijg als test de volgende output:
Dus ik dacht, cool, dat is mijn boomstructuur. Een "FOR XML AUTO, ELEMENTS" eronder plakken en klaar is kees. Maar die vlieger ging helaas niet op. Hij plakt de records dan onder elkaar, alsof het een sequentiele structuur is...
Dus hoe krijg ik hier nou hierarchische XML uit? XML die er ongeveer zo uit mag zien:
Iemand?
Dus ik dacht, kom, laat ik XML uit de database gaan trekken. SQL2005 kan recursieve data uitpoepen en kan XML uitpoepen, dus een combinatie van beide kan ook vast wel. Ik kwam daardoor uit op de volgende query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
| WITH ArticleTree(ID, Title, [Level], [Order]) AS ( SELECT ID, Title, 0, CAST(ID AS varchar(max)) FROM Articles WHERE ParentID IS NULL UNION ALL SELECT a.ID, a.Title, [Level] + 1, CAST([Order] + ' | ' + CAST(a.ID AS varchar(10)) AS varchar(max)) FROM Articles a INNER JOIN ArticleTree t ON a.ParentID=t.ID ) SELECT * FROM ArticleTree ORDER BY [Order] |
Ik krijg als test de volgende output:
| ID | Title | Level | Order |
| 1 | test 1 | 0 | 1 |
| 2 | test 1.1 | 1 | 1 | 2 |
| 3 | test 2 | 0 | 3 |
| 4 | test 2.1 | 1 | 3 | 4 |
Dus ik dacht, cool, dat is mijn boomstructuur. Een "FOR XML AUTO, ELEMENTS" eronder plakken en klaar is kees. Maar die vlieger ging helaas niet op. Hij plakt de records dan onder elkaar, alsof het een sequentiele structuur is...
Dus hoe krijg ik hier nou hierarchische XML uit? XML die er ongeveer zo uit mag zien:
code:
1
2
3
4
5
6
| <Article ID="1" Title="test 1"> <Article ID="2" Title="test 1.1"/> </Article> <Article ID="3" Title="test 2"> <Article ID="4" Title="test 2.1"/> </Article> |
Iemand?
[ Voor 6% gewijzigd door _Thanatos_ op 24-04-2006 20:45 ]
日本!🎌