Ik heb de volgende query:
Zoals je ziet bevat deze meerdere joins op dezelfde table. Deze query haalt een menustructuur op uit een tabel die er als volgt uit ziet:
De functie dbo.ConcatRoles( MenuGroup.id ) maakt een string met toegestane useroles( ; gescheiden) aan de hand van het menuID. Nu wil ik deze in m'n xml in elke node als "UserGroups" attribuut terugzien. Ik krijg echter de foutmelding "Column name 'UserGroups' is repeated. The same attribute cannot be generated more than once on the same XML tag.". Ik snap wel wta dit betekend, maar niet hoe ik het op kan lossen. Als ik ...AS MenuGroup.UserGroups doe dan krijgt het attribuut de naam "MenuGroup.UserGroups", dus dat is het niet. Iemand?
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| SELECT MenuGroup.title, MenuGroup.url, dbo.ConcatRoles( MenuGroup.id ) AS UserGroups, Menu.title, Menu.url, dbo.ConcatRoles( Menu.id ) AS UserGroups, MenuItem.title, MenuItem.url, dbo.ConcatRoles( MenuItem.id ) AS UserGroups, Link.title, Link.url, dbo.ConcatRoles( Link.id ) AS UserGroups FROM Menu MenuGroup INNER JOIN Menu Menu ON MenuGroup.id = Menu.parentID INNER JOIN Menu MenuItem ON Menu.id = MenuItem.parentID INNER JOIN Menu Link ON MenuItem.id = Link.parentID WHERE MenuGroup.parentID IS NULL FOR XML AUTO |
Zoals je ziet bevat deze meerdere joins op dezelfde table. Deze query haalt een menustructuur op uit een tabel die er als volgt uit ziet:
code:
1
2
3
4
5
6
7
| id parentID title url ------------------------------------------------ 1 NULL Menu1 bla 2 NULL Menu2 bla 3 1 Menu1.1 aaaa 4 3 Menu1.1.1 wddw 5 2 Menu2.1 de |
De functie dbo.ConcatRoles( MenuGroup.id ) maakt een string met toegestane useroles( ; gescheiden) aan de hand van het menuID. Nu wil ik deze in m'n xml in elke node als "UserGroups" attribuut terugzien. Ik krijg echter de foutmelding "Column name 'UserGroups' is repeated. The same attribute cannot be generated more than once on the same XML tag.". Ik snap wel wta dit betekend, maar niet hoe ik het op kan lossen. Als ik ...AS MenuGroup.UserGroups doe dan krijgt het attribuut de naam "MenuGroup.UserGroups", dus dat is het niet. Iemand?