Hallo,
Ik heb een vraag over de FOR XML EXPLICIT optie in MSSQL 2000.
Ik heb 4 tabellen, namelijk:
Language
- LanguageId
- Name
LanguageCategory
- LanguageCategoryId
- Name
LanguageRanking
- LanguageRankingId
- Ranking
EmployeeLanguage
- EmployeeLanguageId
- EmployeeId
- LanguageId
- LanguageCategoryId
- LanguageRankingId
Nu zou ik graag de volgende xml structuur uit de tabellen willen halen:
<Languages>
<Language>
<LanguageName>Nederlands</LanguageName>
<Reading>Moedertaal</Reading>
<Writing>Moedertaal</Writing>
</Language>
<Language>
<LanguageName>Engels</LanguageName>
<Reading>Vloeiend</Reading>
<Writing>Vloeiend</Writing>
</Language>
<Language>
<LanguageName>Duits</LanguageName>
<Reading>Vloeiend</Reading>
<Writing>Redelijk</Writing>
</Language>
</Languages>
Echter krijg ik:
<Languages>
<Language>
<LanguageName>Nederlands</LanguageName>
</Language>
<Language>
<LanguageName>Engels</LanguageName>
</Language>
<Language>
<LanguageName>Duits</LanguageName>
</Language>
<Language>
<Reading>Moedertaal</Reading>
</Language>
<Language>
<Reading>Vloeiend</Reading>
</Language>
<Language>
<Reading>Vloeiend</Reading>
</Language>
<Language>
<Writing>Moedertaal</Writing>
</Language>
<Language>
<Writing>Vloeiend</Writing>
</Language>
<Language>
<Writing>Redelijk</Writing>
</Language>
</Languages>
Ik maak gebruik van de volgende query:
SELECT
1 AS TAG,
NULL AS Parent,
NULL AS [Languages!1!Language!Element],
NULL AS [Language!2!LanguageName!Element],
NULL AS [Language!3!Reading!Element],
NULL AS [Language!4!Writing!Element],
NULL AS [Language!2!LanguageId!Hide]
FROM
Employee
WHERE employeeId = 11
UNION ALL
SELECT distinct
2 AS TAG,
1 AS Parent,
NULL AS [Languages!1!Language!Element],
L.Name AS [Language!2!LanguageName!Element],
NULL AS [Language!3!Reading!Element],
NULL AS [Language!4!Writing!Element],
EL.LanguageId AS [Language!2!LanguageId!Hide]
FROM EmployeeLanguage EL
INNER JOIN language L
ON EL.LanguageId = L.LanguageId
WHERE EL.employeeId = 11
UNION ALL
SELECT
3 AS TAG,
1 AS Parent,
NULL AS [Languages!1!Language!Element],
NULL AS [Language!2!LanguageName!Element],
LR.Ranking AS [Language!3!Reading!Element],
NULL AS [Language!4!Writing!Element],
EL.LanguageId AS [Language!2!LanguageId!Hide]
FROM EmployeeLanguage EL
INNER JOIN LanguageCategory LC
ON EL.LanguageCategoryId = LC.LanguageCategoryId
INNER JOIN LanguageRanking LR
ON EL.LanguageRankingId = LR.LanguageRankingId
WHERE EL.employeeId = 11 AND
LC.Name = 'Lezen'
UNION ALL
SELECT
4 AS TAG,
1 AS Parent,
NULL AS [Languages!1!Language!Element],
NULL AS [Language!2!LanguageName!Element],
NULL AS [Language!3!Reading!Element],
LR.Ranking AS [Language!4!Writing!Element],
EL.LanguageId AS [Language!2!LanguageId!Hide]
FROM EmployeeLanguage EL
INNER JOIN LanguageCategory LC
ON EL.LanguageCategoryId = LC.LanguageCategoryId
INNER JOIN LanguageRanking LR
ON EL.LanguageRankingId = LR.LanguageRankingId
WHERE EL.employeeId = 11 AND
LC.Name = 'Schrijven'
ORDER BY [Language!2!LanguageId!Hide]
FOR XML EXPLICIT
Wie kan mij helpen?
Ik heb een vraag over de FOR XML EXPLICIT optie in MSSQL 2000.
Ik heb 4 tabellen, namelijk:
Language
- LanguageId
- Name
LanguageCategory
- LanguageCategoryId
- Name
LanguageRanking
- LanguageRankingId
- Ranking
EmployeeLanguage
- EmployeeLanguageId
- EmployeeId
- LanguageId
- LanguageCategoryId
- LanguageRankingId
Nu zou ik graag de volgende xml structuur uit de tabellen willen halen:
<Languages>
<Language>
<LanguageName>Nederlands</LanguageName>
<Reading>Moedertaal</Reading>
<Writing>Moedertaal</Writing>
</Language>
<Language>
<LanguageName>Engels</LanguageName>
<Reading>Vloeiend</Reading>
<Writing>Vloeiend</Writing>
</Language>
<Language>
<LanguageName>Duits</LanguageName>
<Reading>Vloeiend</Reading>
<Writing>Redelijk</Writing>
</Language>
</Languages>
Echter krijg ik:
<Languages>
<Language>
<LanguageName>Nederlands</LanguageName>
</Language>
<Language>
<LanguageName>Engels</LanguageName>
</Language>
<Language>
<LanguageName>Duits</LanguageName>
</Language>
<Language>
<Reading>Moedertaal</Reading>
</Language>
<Language>
<Reading>Vloeiend</Reading>
</Language>
<Language>
<Reading>Vloeiend</Reading>
</Language>
<Language>
<Writing>Moedertaal</Writing>
</Language>
<Language>
<Writing>Vloeiend</Writing>
</Language>
<Language>
<Writing>Redelijk</Writing>
</Language>
</Languages>
Ik maak gebruik van de volgende query:
SELECT
1 AS TAG,
NULL AS Parent,
NULL AS [Languages!1!Language!Element],
NULL AS [Language!2!LanguageName!Element],
NULL AS [Language!3!Reading!Element],
NULL AS [Language!4!Writing!Element],
NULL AS [Language!2!LanguageId!Hide]
FROM
Employee
WHERE employeeId = 11
UNION ALL
SELECT distinct
2 AS TAG,
1 AS Parent,
NULL AS [Languages!1!Language!Element],
L.Name AS [Language!2!LanguageName!Element],
NULL AS [Language!3!Reading!Element],
NULL AS [Language!4!Writing!Element],
EL.LanguageId AS [Language!2!LanguageId!Hide]
FROM EmployeeLanguage EL
INNER JOIN language L
ON EL.LanguageId = L.LanguageId
WHERE EL.employeeId = 11
UNION ALL
SELECT
3 AS TAG,
1 AS Parent,
NULL AS [Languages!1!Language!Element],
NULL AS [Language!2!LanguageName!Element],
LR.Ranking AS [Language!3!Reading!Element],
NULL AS [Language!4!Writing!Element],
EL.LanguageId AS [Language!2!LanguageId!Hide]
FROM EmployeeLanguage EL
INNER JOIN LanguageCategory LC
ON EL.LanguageCategoryId = LC.LanguageCategoryId
INNER JOIN LanguageRanking LR
ON EL.LanguageRankingId = LR.LanguageRankingId
WHERE EL.employeeId = 11 AND
LC.Name = 'Lezen'
UNION ALL
SELECT
4 AS TAG,
1 AS Parent,
NULL AS [Languages!1!Language!Element],
NULL AS [Language!2!LanguageName!Element],
NULL AS [Language!3!Reading!Element],
LR.Ranking AS [Language!4!Writing!Element],
EL.LanguageId AS [Language!2!LanguageId!Hide]
FROM EmployeeLanguage EL
INNER JOIN LanguageCategory LC
ON EL.LanguageCategoryId = LC.LanguageCategoryId
INNER JOIN LanguageRanking LR
ON EL.LanguageRankingId = LR.LanguageRankingId
WHERE EL.employeeId = 11 AND
LC.Name = 'Schrijven'
ORDER BY [Language!2!LanguageId!Hide]
FOR XML EXPLICIT
Wie kan mij helpen?
[ Voor 27% gewijzigd door BulMi op 18-04-2006 11:15 ]