2 pièce(s) jointe(s)
Problème de requête XML utilisant des "UNION" et "table imbriquée"
Bonjour
Base de donnée : SQL server 2008R2
Outil : fenêtre de requête SQL server
Problème :
Je bloque sur une requête qui me retourne l'erreur (ci-dessous) :
Citation:
Msg 1086, Niveau 15, État 1, Ligne 20
La clause FOR XML n'est pas valide dans les vues, les fonctions inline, les tables dérivées et les sous-requêtes lorsque celles-ci contiennent un opérateur défini. Pour contourner ce problème, encapsulez la clause SELECT contenant un opérateur défini au moyen d'une syntaxe de table dérivée et appliquez FOR XML à celle-ci.
Pour le moment je n'ai pas trouvé la solution à ce problème.
Requête 1 :
Code:
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
|
SELECT
R.id_region as regcode,
R.intitule as regint,
(
SELECT
C1.id_centre as centre_code,
C1.intitule as centre_int
FROM
CENTRE C1
WHERE
C1.id_centre = '00001'
UNION
SELECT
C2.id_centre as centre_code,
C2.intitule as centre_int
FROM
CENTRE C2
WHERE
C2.id_centre = '00002'
ORDER BY
centre_code
FOR XML AUTO
) as XML_centre
FROM
REGION R |
Le résultat "Résultats dans les grilles" dans SQL server 2008R2 que je voulais :
regcode |
regint |
XML_centre |
A1 |
ALSACE |
<centre code="00001">.........</centre> |
etc... |
etc... |
etc... |
Cependant ma requête fonctionne sous la forme (ci-dessous) mais elle ne correspond pas au résultat attendu :
Requête 2 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
SELECT
C1.id_centre as centre_code,
C1.intitule as centre_int
FROM
CENTRE C1
WHERE
C1.id_centre = '00001'
UNION
SELECT
C2.id_centre as centre_code,
C2.intitule as centre_int
FROM
CENTRE C2
WHERE
C2.id_centre = '00002'
ORDER BY
centre_code
FOR XML AUTO |
Ci-joint les scripts (un jeu de test pour l'exemple / la requête ) pour faciliter votre aide
Pièce jointe 311888
Pièce jointe 311893
Pouvez-vous m'aider à faire fonctionner la requête 1 ?
Merci d'avance pour vos réponses et bonne journée