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

Requêtes MySQL Discussion :

SELECT dans un champ XML avec noeud multiple


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2020
    Messages : 30
    Par défaut SELECT dans un champ XML avec noeud multiple
    Bonjour à tous,

    Je cherche à faire un SELECT sur un champ XML de ma table mais je bloque sur un point.
    SGBD: SQL Server

    Mon XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <SectionAnnotations xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SectionNumber>0</SectionNumber>
      <Pages>
        <PageAnnotations>
          <PageNumber>2</PageNumber>
          <Annotations>
            <Layer xmlns="http://test" Id="1234">
              <TextStamp Transparent="true" Id="1" UserName="dwadmin">
                <Created User="dwadmin" Time="2022-09-23T15:10:02Z" />
                <Location Left="7085" Top="831" Width="1980" Height="886" />
                <HeadFont FontName="Arial" FontSize="220" />
                <Font FontName="Arial" FontSize="220" />
                <Value>X</Value>
              </TextStamp>
            </Layer>
          </Annotations>
        </PageAnnotations>
    	  <PageAnnotations>
    		  <PageNumber>4</PageNumber>
    		  <Annotations>
    			  <Layer xmlns="http://test" Id="1234">
    				  <TextStamp Transparent="true" Id="1" UserName="dwadmin">
    					  <Created User="dwadmin" Time="2022-09-23T15:10:02Z" />
    					  <Location Left="7085" Top="831" Width="1980" Height="886" />
    					  <HeadFont FontName="Arial" FontSize="220" />
    					  <Font FontName="Arial" FontSize="220" />
    					  <Value>X</Value>
    				  </TextStamp>
    			  </Layer>
    		  </Annotations>
    	  </PageAnnotations>
        <PageAnnotations>
          <PageNumber>8</PageNumber>
          <Annotations>
            <Layer xmlns="http://test" Id="1234">
              <TextStamp Transparent="true" Id="2" ShowUser="false" ShowDate="false" ShowTime="false">
                <Created User="dwadmin" Time="2022-09-23T15:11:23Z" />
                <Location Left="4498" Top="1488" Width="5216" Height="353" />
                <HeadFont FontName="Arial" FontSize="220" />
                <Font FontName="Arial" FontSize="220" />
                <Value>Y</Value>
              </TextStamp>
            </Layer>
          </Annotations>
        </PageAnnotations>
      </Pages>
    </SectionAnnotations>
    Le noeud <PageAnnotations> peut se répéter X fois.
    Je dois récupérer les valeurs de PageNumber si l'ID dans TextStamp est égal à 1.
    Dans le cas où j'ai plusieurs noeud avecdes ID TextStamp à 1 je dois récupérer toutes les valeurs de PageNumber en les concaténant (séparation avec une virgule).

    J'arrive facilement à récupérer la 1ere valeur de PageNumber avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MONCHAMPXML.value('(/SectionAnnotations//PageNumber/node())[1]', 'nvarchar(max)') as PageNumber
      FROM  MaTable
    Mais je vois pas comment boucler sur un champ XML ni comment faire la concaténation si plusieurs valeurs.

    Des pistes à me proposer?

    Merci pour votre aide,

  2. #2
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Je suis étonné par votre message dans le forum MySQL alors que vous précisez : SGBD: SQL Server ?

    Pierre

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2020
    Messages : 30
    Par défaut
    Effectivement si je ne poste pas dans la bonne section...
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SELECT dans un champ XML
    Par ultrakas80 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/08/2022, 15h22
  2. Problèmes d'ajouts de noeuds dans un fichier xml avec python 2.7
    Par Piotree dans le forum XML/XSL et SOAP
    Réponses: 9
    Dernier message: 27/03/2018, 21h58
  3. Tester existence d'un noeud dans un champ xml
    Par olibara dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 08/04/2013, 20h32
  4. se pointer sur un noeud enfant dans une arborescence XML avec Java
    Par PrFaToum dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 08/06/2012, 13h39
  5. Réponses: 3
    Dernier message: 09/02/2007, 18h51

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