Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 74
    Points : 11
    Points
    11

    Par défaut group by avec XQuery

    Bonsoir,
    soit le doc XML:
    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
    28
    29
    30
    31
    32
     
    <bib>
        <book year="1994">
            <title>TCP/IP Illustrated</title>
            <author><last>Stevens</last><first>W.</first></author>
            <publisher>Addison-Wesley</publisher>
            <price>65.95</price>
        </book>
         <book year="1992">
            <title>Advanced Programming in the Unix environment</title>
            <author><last>Stevens</last><first>W.</first></author>
            <publisher>Addison-Wesley</publisher>
            <price>65.95</price>
        </book>
         <book year="2000">
            <title>Data on the Web</title>
            <author><last>Abiteboul</last><first>Serge</first></author>
            <author><last>Buneman</last><first>Peter</first></author>
            <author><last>Suciu</last><first>Dan</first></author>
            <publisher>Morgan Kaufmann Publishers</publisher>
            <price>39.95</price>
        </book>
         <book year="1999">
            <title>The Economics of Technology and Content for Digital TV</title>
            <editor>
                   <last>Gerbarg</last><first>Darcy</first>
                    <affiliation>CITI</affiliation>
            </editor>
            <publisher>Kluwer Academic Publishers</publisher>
            <price>129.95</price>
        </book>
     </bib>
    en utilisant une requête XQuery, j'aimerais obtenir les livres écrits par chaque auteur au format:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    <listings>
    <result>
    <author> Stevens W.</author>
    <title> TCP/IP Illustrated </title>
    <title> Advanced Programming in the Unix environment </title>
    </result></listings>
    merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    octobre 2011
    Messages
    668
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 668
    Points : 1 070
    Points
    1 070

    Par défaut

    Qu'est-ce que vous avez essayez?

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 74
    Points : 11
    Points
    11

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Qu'est-ce que vous avez essayez?
    voila mon éssai:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <listings>
    {for $author in distinct-values(doc("biblio.xml")//author)
    return 
    <result>
    <author>{$author}</author>
    {for $book in doc("biblio.xml")//book 
    where $book/author=$author
    return $book/title
    }
    </result> 
    }
    </listings>
    cette requête donne le résultat:
    Code :
    1
    2
    3
    4
    5
    6
    7
     
    <listings>
    <result><author>StevensW.</author><title>TCP/IP Illustrated</title><title>Advanced Programming in the Unix environment</title></result>
    <result><author>AbiteboulSerge</author><title>Data on the Web</title></result>
    <result><author>BunemanPeter</author><title>Data on the Web</title></result>
    <result><author>SuciuDan</author><title>Data on the Web</title></result>
    </listings>
    remarquez: pas d'espace entre le nom et prénom.

  4. #4
    Membre Expert
    Inscrit en
    octobre 2011
    Messages
    668
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 668
    Points : 1 070
    Points
    1 070

    Par défaut

    Est-ce que les espaces devant et après les title sont importants aussi? En tout cas, je les mets malgré tout si vous voulez. Et l'espace devant le nom?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    declare variable $doc:=doc("biblio.xml");
    <listings>
    {
    for $author in distinct-values($doc/bib/book/author/concat(' ',last,' ',first))
    return 
    <result>
    {
    <author>{$author}</author>,
    for $book in $doc/bib/book 
    where $book/author/concat(' ',last,' ',first)=$author
    return 
    <title>{concat(' ',$book/title/text(),' ')}</title>
    }
    </result> 
    }
    </listings>
    p.s Attention à la virgule après la balise author, c'est important aussi.

  5. #5
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : avril 2010
    Messages : 74
    Points : 11
    Points
    11

    Par défaut

    Citation Envoyé par tsuji Voir le message
    Est-ce que les espaces devant et après les title sont importants aussi? En tout cas, je les mets malgré tout si vous voulez. Et l'espace devant le nom?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    declare variable $doc:=doc("biblio.xml");
    <listings>
    {
    for $author in distinct-values($doc/bib/book/author/concat(' ',last,' ',first))
    return 
    <result>
    {
    <author>{$author}</author>,
    for $book in $doc/bib/book 
    where $book/author/concat(' ',last,' ',first)=$author
    return 
    <title>{concat(' ',$book/title/text(),' ')}</title>
    }
    </result> 
    }
    </listings>
    p.s Attention à la virgule après la balise author, c'est important aussi.
    merci beaucoup, çà marche très bien

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •