Précédent   Forum du club des développeurs et IT Pro > Autres langages > XML/XSL et SOAP > XQUERY/SGBD
XQUERY/SGBD Le langage XQUERY et tout ce qui a trait aux relations XML et bases de données : BDD XML native, intégration/extraction de XML, XML dans BDD relationnelle... 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
 
Outils de la discussion
Publicité
'
Vieux 10/06/2012, 18h28   #1
win_ubuntu
Invité régulier
 
Inscription : avril 2010
Messages : 51
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 51
Points : 7
Points : 7
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
win_ubuntu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 13h32   #2
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 412
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 412
Points : 675
Points : 675
Qu'est-ce que vous avez essayez?
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 15h49   #3
win_ubuntu
Invité régulier
 
Inscription : avril 2010
Messages : 51
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 51
Points : 7
Points : 7
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.
win_ubuntu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 18h38   #4
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 412
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 412
Points : 675
Points : 675
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.
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2012, 19h19   #5
win_ubuntu
Invité régulier
 
Inscription : avril 2010
Messages : 51
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 51
Points : 7
Points : 7
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
win_ubuntu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h35.


 
 
 
 
Partenaires

Hébergement Web