IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

Insertion des données xml avec une requête SQL


Sujet :

XML/XSL et SOAP

  1. #1
    Membre habitué
    Femme Profil pro
    Consultante BI
    Inscrit en
    Mars 2011
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Consultante BI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 236
    Points : 191
    Points
    191
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut
    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

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Comme ça, par exemple, et variants sont nombreux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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')
      )

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut
    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

  5. #5
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    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.

Discussions similaires

  1. Encodage des données issus d'une requête SQL
    Par Chipss dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/02/2013, 16h04
  2. Insertion des données Excel dans une base SQL-Server
    Par cedy-kassy dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/03/2012, 11h11
  3. Insertion des données xml avec une requête SQL
    Par Rymaya dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/11/2011, 17h50
  4. Réponses: 2
    Dernier message: 22/12/2009, 16h35
  5. Réponses: 3
    Dernier message: 20/12/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo