Accueil > Forum > > > > FOR XML EXPLICIT..... Lyrics?!
FOR XML EXPLICIT..... Lyrics?!
mercredi 28 juin 2006 à 12:19:45 |
FOR XML EXPLICIT..... Lyrics?!

Omerdude
|
Bonjour, Je suis en train de travailler sur une requête, et vu que c'est pas du tout mon truc à la base, j'ai un peu de mal... Explication: J'ai une BDD hébergée sur SQL Server 2000 d'où je dois extraire des données à envoyer à un client qui travaille sous Oracle. Elle contient une table parent et plusieurs tables enfants. Le format d'échange doit être du xml bien structuré, un peu dans ce style: <parent 1> <enfant 1-1 /> <enfant 1-2 /> </parent 1> <parent 2> <enfant 2-1 /> ........ Or pas moyen d'arriver à ce résultat! Ma requête crée bien les noeuds parents, sans problèmes, mais joint tous les noeuds enfants au dernier noeud parent! Ca donne un peu ça: <parent 1> </parent 1> <parent 2> <enfant 1-1 /> <enfant 1-2 /> <enfant 2-1 /> ........ Ce qui est assez facheux! Je joins ma requête (vous moquez pas, je suis pas un pro de SQL et je suis en plein bidouillage! Il se peut que certaines erreurs soient énormes!): SELECT 1 AS Tag, Null AS Parent, C.CLI_ID AS [CLIENT!1!CLI_ID!ELEMENT!IDREF], CLI_CATEGORIE AS [CLIENT!1!CLI_CATEGORIE!ELEMENT], CLI_RSOC1 AS [CLIENT!1!CLI_RSOC1!ELEMENT], CLI_RSOC2 AS [CLIENT!1!CLI_RSOC2!ELEMENT], CLI_CIVILITE AS [CLIENT!1!CLI_CIVILITE!ELEMENT], CLI_NOM AS [CLIENT!1!CLI_NOM!ELEMENT], CLI_PRENOM AS [CLIENT!1!CLI_PRENOM!ELEMENT], NULL AS [ENFANT!2!CLI_ID!HIDE], NULL AS [ENFANT!2!ENF_RANG!ELEMENT], NULL AS [ENFANT!2!ENF_GENRE!ELEMENT], NULL AS [ENFANT!2!ENF_NOM!ELEMENT], NULL AS [ENFANT!2!ENF_PRENOM!ELEMENT], NULL AS [ENFANT!2!ENF_DNAISS!ELEMENT] FROM CLIENT C, ENFANT E UNION SELECT 2, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL , E.CLI_ID, E.ENF_RANG, E.ENF_GENRE, E.ENF_NOM, E.ENF_PRENOM, E.ENF_DNAISS FROM CLIENT C INNER Join ENFANT E ON E.CLI_ID=C.CLI_ID AND E.ENF_RANG != 0 FOR XML EXPLICIT Sachant que je ne travaille pour l'instant que sur la jointure de deux tables... déjà que ça marche pas je vais pas tout compliquer pour la plaisir! Merci d'avance à ceux qui sauront éclairer ma lanterne... merDude
|
|
jeudi 29 juin 2006 à 11:30:22 |
Re : FOR XML EXPLICIT..... Lyrics?!

skweeky
|
Je ne suis pas sûr d'avoir tout compris... Mais çà ne serait pas plus simple comme çà :
SELECT 1 AS Tag, Null AS Parent, C.CLI_ID AS [CLIENT!1!CLI_ID!ELEMENT!IDREF], CLI_CATEGORIE AS [CLIENT!1!CLI_CATEGORIE!ELEMENT], CLI_RSOC1 AS [CLIENT!1!CLI_RSOC1!ELEMENT], CLI_RSOC2 AS [CLIENT!1!CLI_RSOC2!ELEMENT], CLI_CIVILITE AS [CLIENT!1!CLI_CIVILITE!ELEMENT], CLI_NOM AS [CLIENT!1!CLI_NOM!ELEMENT], CLI_PRENOM AS [CLIENT!1!CLI_PRENOM!ELEMENT], E.CLI_ID AS [ENFANT!2!CLI_ID!HIDE], E.ENF_RANG AS [ENFANT!2!ENF_RANG!ELEMENT], E.ENF_GENRE AS [ENFANT!2!ENF_GENRE!ELEMENT], E.ENF_NOM AS [ENFANT!2!ENF_NOM!ELEMENT], E.ENF_PRENOM AS [ENFANT!2!ENF_PRENOM!ELEMENT], E.ENF_DNAISS AS [ENFANT!2!ENF_DNAISS!ELEMENT] CLIENT C INNER Join ENFANT E ON E.CLI_ID=C.CLI_ID AND E.ENF_RANG != 0
Je ne vois pas l'interet du UNION ni ce que tu souhaites faire exactement.
----------------- Christian Robert Winwise
|
|
jeudi 29 juin 2006 à 11:48:34 |
Re : FOR XML EXPLICIT..... Lyrics?!

Omerdude
|
zBonjour, En fait j'essaie de créer un fichier xml qui regroupe plusieurs bases. A terme, mon fichier xml devra ressembler à ça: <CLIENT> <CLI_ID></CLI_ID> <CLI_CATEGORIE></CLI_CATEGORIE> ........ <ENFANT> <ENF_RANG></ENF_RANG> <ENF_GENRE></ENF_GENRE> .......... </ENFANT> <CARTE> <CART_ID></CART_ID> ............ </CARTE> <COORDONNEES> <COO_ADR1></COO_ADR2> ........... </COORDONNEES> <NPAI> <NPAI_ID></NPAI_ID> ............ </NPAI> <HISTFID> <HISTFID_ID></HISTFID_ID> .......... </HISTFID> </CLIENT> C'est à dire que concrètement, on doit avoir 1 table parent et 5 tables enfants imbriquées toutes au même niveau. J'ai essayé le INNER JOIN pour chacune des tables enfants (ce qui fait donc 5 INNER JOIN ^^) mais ça me donne un truc du genre: <CLIENT> <ENFANT> <CARTE> <COORDONNEES> <NPAI> <HISTFID> </HISTFID> </NPAI> </COORDONNEES> </CARTE> </ENFANT> </CLIENT> Par ailleurs, je ne sais pas trop non plus si le UNION est une solution. Ca m'arrange parce que ça vire les doublons, mais si faut s'en passer je ferai sans! merDude
|
|
lundi 3 juillet 2006 à 12:23:04 |
Re : FOR XML EXPLICIT..... Lyrics?!

Malkuth
|
Réponse acceptée !
Salut, en fait ce qu'il manque c'est que ta table n'est pas ordonnée
SELECT 1 AS Tag, Null AS Parent, C.CLI_ID AS [CLIENT!1!CLI_ID!ELEMENT!IDREF], CLI_CATEGORIE AS [CLIENT!1!CLI_CATEGORIE!ELEMENT], CLI_RSOC1 AS [CLIENT!1!CLI_RSOC1!ELEMENT], CLI_RSOC2 AS [CLIENT!1!CLI_RSOC2!ELEMENT], CLI_CIVILITE AS [CLIENT!1!CLI_CIVILITE!ELEMENT], CLI_NOM AS [CLIENT!1!CLI_NOM!ELEMENT], CLI_PRENOM AS [CLIENT!1!CLI_PRENOM!ELEMENT], NULL AS [ENFANT!2!CLI_ID!HIDE], NULL AS [ENFANT!2!ENF_RANG!ELEMENT], NULL AS [ENFANT!2!ENF_GENRE!ELEMENT], NULL AS [ENFANT!2!ENF_NOM!ELEMENT], NULL AS [ENFANT!2!ENF_PRENOM!ELEMENT], NULL AS [ENFANT!2!ENF_DNAISS!ELEMENT] FROM CLIENT C, ENFANT E
UNION
SELECT 2, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL , E.CLI_ID, E.ENF_RANG, E.ENF_GENRE, E.ENF_NOM, E.ENF_PRENOM, E.ENF_DNAISS FROM CLIENT C INNER Join ENFANT E ON E.CLI_ID=C.CLI_ID AND E.ENF_RANG != 0 FOR XML EXPLICIT
En effet il faut imaginée que les champ renvoyer sont d'abord tous ceux du premier select puis tous ceux du second select donc tous les enregistrement du deuxiéme select sont associè au dernier enregistrement du premier select ( enlève le FOR XML EXPLICIT pour t'en faire une idée).
SELECT 1 AS Tag, Null AS Parent, C.CLI_ID AS [CLIENT!1!CLI_ID!ELEMENT!IDREF], CLI_CATEGORIE AS [CLIENT!1!CLI_CATEGORIE!ELEMENT], CLI_RSOC1 AS [CLIENT!1!CLI_RSOC1!ELEMENT], CLI_RSOC2 AS [CLIENT!1!CLI_RSOC2!ELEMENT], CLI_CIVILITE AS [CLIENT!1!CLI_CIVILITE!ELEMENT], CLI_NOM AS [CLIENT!1!CLI_NOM!ELEMENT], CLI_PRENOM AS [CLIENT!1!CLI_PRENOM!ELEMENT], NULL AS [ENFANT!2!CLI_ID!HIDE], NULL AS [ENFANT!2!ENF_RANG!ELEMENT], NULL AS [ENFANT!2!ENF_GENRE!ELEMENT], NULL AS [ENFANT!2!ENF_NOM!ELEMENT], NULL AS [ENFANT!2!ENF_PRENOM!ELEMENT], NULL AS [ENFANT!2!ENF_DNAISS!ELEMENT] FROM CLIENT C, ENFANT E
UNION
SELECT 2, 1, C.CLI_ID, NULL, NULL, NULL, NULL, NULL, NULL , E.CLI_ID, E.ENF_RANG, E.ENF_GENRE, E.ENF_NOM, E.ENF_PRENOM, E.ENF_DNAISS FROM CLIENT C INNER Join ENFANT E ON E.CLI_ID=C.CLI_ID AND E.ENF_RANG != 0 ORDER BY [CLIENT!1!CLI_ID!ELEMENT!IDREF], [ENFANT!2!CLI_ID!HIDE] FOR XML EXPLICIT
Il y'a deux petite modif : d'abord dans le second select j' ai rajouter C.CLI_ID pour permettre de trier les enregistrements en ordonénant les champs sur la colone [CLIENT!1!CLI_ID!ELEMENT!IDREF] de cette manière les champs enfant seront placer sous les champs parents correspondants ensuite on ordonne sur la colone [ENFANT!2!CLI_ID!HIDE], pour assuré que les parent seront bien ordonnée devant leus enfant en effet tous les parents on un [ENFANT!2!CLI_ID!HIDE] égal a null et tous le enfant on un [ENFANT!2!CLI_ID!HIDE] différent de zéro.
regarde la diférence avec ta première mouture en enlevant là encore le FOR XML EXPLICIT.
Bon j'ai pas eu le temps de tester mais ca devrait marcher (en tout cas l'esprit est là : ordonné les enregistrements).
|
|
lundi 3 juillet 2006 à 15:23:48 |
Re : FOR XML EXPLICIT..... Lyrics?!

Omerdude
|
Franchement, merci enormément de ce coup de main! Non seulement ça marche, mais en plus j'ai même compris pourquoi! Ca faisait un petit moment que je me prenais la tête là dessus et j'avais fini par ne plus faire preuve de logique. Et la, en quelques lignes, tout redevient clair! Encore merci!!!!!!! merDude
|
|
Cette discussion est classée dans : client, element, enfant, cli, enf
Répondre à ce message
Sujets en rapport avec ce message
Requête sql sur plusieurs tables [ par Eros2007 ]
Bonjour tout le monde.voila ma question:j'utilise une requette sql pour pouvoir faire un preview et imprimer par la suite les enregistrements des clie
Logique TSQL [ par cbu ]
Bonjour,je suis complètement dans le flou avec ma procédure stockée ..Je vous explique :J'ai 2 tables T_CLIENT Cli_IDCli_NomCli_PrenomT_FACTUREFac_IDF
java_oracle [ par aamsa ]
bonjour a tous est ce que quelqu un peut m aider a propos oracle et java, voila mon probleme:j ai une procedure stochee voila son code: create or repl
REQUETE SQL [ par Eros2007 ]
Bonjour tout le monde. voila ma question: j'utilise une requette sql pour pouvoir faire un preview et imprimer par la suite les enregistrements des cl
SUM puis MAX et on affiche le client et la somme max [ par Hackdevil ]
Bonjour, J'ai un problème pour une requête. - Table BILANINTER qui est composée de idIntervention, prix etc... - Table RDV qui contient idIntervent
Optimisation client-serveur [ par rbellot ]
Bonsoir à tous, Je cherche à optimiser une appli client-serveur et je m'interroge sur la localisation des données. Certaines requètes de l'appli son
Access 2007 [ par TechNoDreaM ]
Bonjour, J'ai une requête de trie qui vient chercher l'ensemble IDClient : [code=autre]SELECT Client.[IDClient] FROM Client WHERE (((Client.[IDClien
thread + base de donnee [ par jadoud ]
bonjour, mon but c'est réaliser un application client -serveur (plusieurs client) donc l'idée coûter serveur de criée un thread qui traite les roquet
Problème de connexion client SQL Server 2008 [ par ozguillaume ]
Bonjour à tous, Je suis débutant en SQL Server des connaissances en Oracle qui me permette pas de passer outre mon problème. J'ai un [b]serveur[/b][
Livres en rapport
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|