Précédent   Forum des professionnels en informatique > Autres langages > XML/XSL et SOAP
XML/XSL et SOAP Forum d'entraide sur XML et SOAP. Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2011, 15h16   #1
Membre régulier
 
Femme Rym Ayari
Inscription : mars 2011
Messages : 134
Détails du profil
Informations personnelles :
Nom : Femme Rym Ayari
Localisation : Tunisie

Informations forums :
Inscription : mars 2011
Messages : 134
Points : 79
Points : 79
Par défaut Insertion des données xml avec une requête SQL

Bonjour,

J'ai une table Client qui possède 3 attributs ( Prenom , Nom et XmlTest de type XML qui groupe le poids , les yeux et la taille)

Je veux insérer des informations dans cette table , voila la requête que j'utilise:

Code :
1
2
3
4
5
6
7
INSERT INTO [Client] (Prenom, Nom, XmlTest) 
           SELECT 'Julien', 'Duprat',
                          N'<ClientAttributes>
                         <Poids> 50 </Poids>
                         <Yeux>Bleu</Yeux>
                         <Taille>1.85</Taille>
                </ClientAttributes>'
les informations inséreés doivent être récupérées d'une autre table , mais je sais pas comment je pourrais le faire
j'ai essayé avec

Code :
1
2
3
4
5
6
7
INSERT INTO [Client] (Prenom, Nom, XmlTest) 
           SELECT 'Julien', 'Duprat',
                          N'<ClientAttributes>
                      <Poids> SELECT POIDS FROM T1 WHERE nom='Julien' /Poids>
                     <Yeux>SELECT YEUX FROM T2 WHERE nom='Julien'</Yeux>
                     <Taille>SELECT TAILLE FROM T3 WHERE nom='Julien'</Taille>
                </ClientAttributes>'
mais j'ai pas réussi

L'enviromenent : sql server 2008
Rymaya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h53   #2
Membre confirmé
 
Inscription : février 2005
Messages : 299
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 299
Points : 266
Points : 266
Hello Rymaya,

Quel système de base de données utilises-tu (Oracle, sql server ou autre)? As-tu essayé de créer un vue qui te permet de récupérer tes infos et ensuite de l'inclure dans ton insert?

Cédric
Cédric B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2011, 11h29   #3
Membre confirmé
 
Inscription : octobre 2011
Messages : 188
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 188
Points : 287
Points : 287
Comme ça, par exemple, et variants sont nombreux.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
INSERT INTO [Client] (Prenom, Nom, XmlTest) 
SELECT 
'Julien'
, 'Duprat'
, (SELECT
  (SELECT POIDS Poids FROM T1 WHERE Prenom='Julien' FOR XML PATH(''),Type)
  ,(SELECT YEUX Yeux FROM T2 WHERE Prenom='Julien' FOR XML PATH(''),Type)
  ,(SELECT TAILLE Taille FROM T3 WHERE Prenom='Julien' FOR XML PATH(''),Type)
  FOR
  XML PATH(''),
  ROOT('ClientAttributes')
  )
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 09h23   #4
Membre confirmé
 
Inscription : février 2005
Messages : 299
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 299
Points : 266
Points : 266
Hello tsuji,

J'avoue que je n'ai encore pas fait de "insert" de ce style dans sql server 2008! Par contre, j'ai qu'il y a un type de donnée "xml" dasn sql server 2008, alors si tu remplace "Type" dans ton insert par "xml", peut être que cela donnera le résultat que tu désires. Est-ce que c'est le cas?

Cédric
Cédric B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 10h22   #5
Membre confirmé
 
Inscription : octobre 2011
Messages : 188
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 188
Points : 287
Points : 287
Bonjour Cédric,

Il est l'usage propre d'y mettre Type pour donner ce que l'op a voulu d'avoir. Ce que j'ai posté donne exactement le resultat attendu, xmlTest étant du type xml. J'ai seulement changé le nom du colonne dans T1, T2 et T3 de 'nom' à 'prenom' (parce que je le trouve plus raisonnable). Il droit le changé de ceux qu'ils s'appelent vraiement. Là, ce devrait d'être une simplification, en tout cas, parce que nom ou prénom ne devrait pas donner un retour unique. Le conditionnel where ... joue seulement un role quelque peu sur un index, sinon, il lui faut mettre par exemple Top 1 pour y limiter le nombre de résultats retournés.

En somme, si tout s'accorde, la requête donne exactement le résultat attentu.
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h43.


 
 
 
 
Partenaires

Hébergement Web