Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:master:mlbda:tmes:xquery

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
site:enseignement:master:mlbda:tmes:xquery [22/11/2020 14:33]
amine
site:enseignement:master:mlbda:tmes:xquery [22/11/2023 11:28] (Version actuelle)
amine
Ligne 22: Ligne 22:
 ==== Récupération des données ==== ==== Récupération des données ====
   * Créer un répertoire de travail pour ce tme.   * Créer un répertoire de travail pour ce tme.
-  * Télécharger et décompresser,​ dans votre répertoire de travail, le fichier ​{{ :site:​enseignement:​master:​mlbda:​tmes:​tmexquery.tgz |tmexquery.tgz}}, cela va créer le répertoire **tmexpath**+  * Télécharger et décompresser,​ dans votre répertoire de travail, le fichier ​[[https://​nuage.lip6.fr/​s/​TZtW59sCxTMHqCN|tmexquery.tgz]], cela va créer le répertoire **tmexquery**
   ​   ​
  
Ligne 42: Ligne 42:
  
 4- Tester la requête ci-dessous et appuyer sur le triangle vert pour exécuter la requête. Les résultats de cette requete sont en rouge dans l'​arbre original. 4- Tester la requête ci-dessous et appuyer sur le triangle vert pour exécuter la requête. Les résultats de cette requete sont en rouge dans l'​arbre original.
 +<code xquery>
   for $r in //rencontre   for $r in //rencontre
   return $r   return $r
 +</​code>​
  
 **Remarque 1** Il est évident que si le résultat de votre requete est un nouvel élément construit par copie d'​autres éléments de votre document interrogé, les éléments de ce dernier ne seront pas coloriés. **Remarque 1** Il est évident que si le résultat de votre requete est un nouvel élément construit par copie d'​autres éléments de votre document interrogé, les éléments de ce dernier ne seront pas coloriés.
Ligne 59: Ligne 60:
   * Les éléments //auction// sous <fc #​008000>​closed_auctions</​fc>​ correspondent à des enchères <fc #​008000>​terminées</​fc>​.   * Les éléments //auction// sous <fc #​008000>​closed_auctions</​fc>​ correspondent à des enchères <fc #​008000>​terminées</​fc>​.
  
-Afin de faciliter la formulation des requêtes, vous pouvez vous appuyer sur structure globale du document XMark représentée ci-dessous.+Afin de faciliter la formulation des requêtes, vous pouvez vous appuyer sur structure globale du document XMark représentée ci-dessous ​ou sur la **définition de schéma** fournie en [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​adapted-xmark-xsd|XSD]]
  
 {{ :​site:​enseignement:​master:​mlbda:​xmark-schema.png?​direct&​700 |}} {{ :​site:​enseignement:​master:​mlbda:​xmark-schema.png?​direct&​700 |}}
 +
 + 
 +
  
  
Ligne 69: Ligne 73:
   - La valeur initiale (élément initial) des trois premières enchères <fc #​ff0000>​en cours</​fc>​.   - La valeur initiale (élément initial) des trois premières enchères <fc #​ff0000>​en cours</​fc>​.
   - La valeur de la première et de la dernière augmentation (élément increase de bidder) effectuée sur les trois premières des enchères en cours, selon l'​ordre des enchères défini dans les données xml (ne pas trier les enchères chronologiquement).   - La valeur de la première et de la dernière augmentation (élément increase de bidder) effectuée sur les trois premières des enchères en cours, selon l'​ordre des enchères défini dans les données xml (ne pas trier les enchères chronologiquement).
-  - Le prix des objets vendus à plus de 480. +  - Le nom et le prix des objets vendus à plus de 480. 
   - Le nom des objets du continent africain   - Le nom des objets du continent africain
   - Le nom des objets du continent africain avec leur prix de vente    - Le nom des objets du continent africain avec leur prix de vente 
Ligne 95: Ligne 99:
 </​code>​ </​code>​
  
-- Le prix des objets vendus à plus de 480. +- Le nom et le prix des objets vendus à plus de 480. 
 <code xquery> <code xquery>
 for $x in //​closed_auctions/​auction,​ for $x in //​closed_auctions/​auction,​
 $y in //item $y in //item
 where $x/​price/​text()>​480 and $x/​itemref/​@item =$y/@id where $x/​price/​text()>​480 and $x/​itemref/​@item =$y/@id
-return $x/price+return ​<​result>​{ $y/​name, ​$x/price}</​result>​
 </​code>​ </​code>​
  
Ligne 128: Ligne 132:
 ===== Exercice 2  ===== ===== Exercice 2  =====
 Ecrire en XQuery les requêtes sur la base tennis (fichiers joueur.xml, gain.xml, rencontre.xml). Ecrire en XQuery les requêtes sur la base tennis (fichiers joueur.xml, gain.xml, rencontre.xml).
 +  - afficher tous les tournois (lieu,​année) triés par année, puis lieu. Utiliser la fonction distinct-values(...) pour obtenir un ensemble sans doubles. Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res0.txt]]
 +  - pour chaque tournoi (lieu, année) donner les nom et prénom des participants qui sont dans le fichier gain.xml. Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res1.txt]]
 +  - pour chaque année, donner le nombre tournois auxquels chaque joueur a participé. pour chaque année, donner le nombre tournois auxquels chaque joueur a participé. Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res2.txt]]
  
-  ​afficher tous les tournois (lieu,​année) triés par année, puis lieu. Utiliser la fonction distinct-values(...) pour obtenir un ensemble sans doubles. Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res0.txt]] +<showif isloggedin> ​**<fc #​ff0000>​Réponses</​fc>​**
-  ​pour chaque tournoi (lieu, année) donner les nom et prénom des participants qui sont dans le fichier gain.xml. Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res1.txt]] +
-  ​pour chaque année, donner le nombre tournois auxquels chaque joueur a participé. pour chaque année, donner le nombre tournois auxquels chaque joueur a participé. Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res2.txt]]+
  
-<showif isloggedin>​ +  ​* afficher tous les tournois (lieu,​année) triés par année, puis lieu. Utiliser la fonction distinct- values(...) pour obtenir un ensemble sans doubles. ​
-**<fc #​ff0000>​Réponses</​fc>​** +
- +
-afficher tous les tournois (lieu,​année) triés par année, puis lieu. Utiliser la fonction distinct- values(...) pour obtenir un ensemble sans doubles. ​Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res0.txt]]+
 <code xquery> <code xquery>
 <​tournois>​ <​tournois>​
Ligne 148: Ligne 150:
 </​tournois>​ </​tournois>​
 </​code>​ </​code>​
- 
 ou bien ou bien
-<code xquery> 
 <code xquery> <code xquery>
 <​tournois>​ <​tournois>​
Ligne 163: Ligne 163:
 </​tournois>​ </​tournois>​
 </​code>​ </​code>​
- 
 ou bien ou bien
- 
 <code xquery> <code xquery>
-</code>+<tournois> 
 +    { 
 +    for $a in distinct-values(document("​rencontre.xml"​)//​annee) sort by (.), 
 +               $l in distinct-values(document("​rencontre.xml"​)//​lieutournoi) sort by (.)
  
-pour chaque tournoi (lieu, année) donner les nom et prénom des participants qui sont dans le fichier gain.xml. ​Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res1.txt]]+           let $r:= document("​rencontre.xml"​)//​rencontre[annee=$a and lieutournoi=$l] 
 +           where exists($r) 
 + 
 +           ​return 
 +                 <​tournoi lieu="​{$l/​text()}"​ annee="​{$a/​text()}"/>​ 
 +               
 +           } 
 +</​tournois>​ 
 +</​code>​ 
 +  
 +  * pour chaque tournoi (lieu, année) donner les nom et prénom des participants qui sont dans le fichier gain.xml. ​
 <code xquery> <code xquery>
 +<​tournois>​
 +    {
 +    for $a in distinct-values(document("​rencontre.xml"​)//​rencontre/​annee) sort by (.) 
 +    ​return ​
 +              ​
 +              for $l in distinct-values(document("​rencontre.xml"​)//​rencontre[annee=$a]/​lieutournoi) sort by (.)
 +              let $r:= document("​rencontre.xml"​)//​rencontre[annee=$a and lieutournoi=$l]
 +              return ​
 +                 <​tournoi lieu="​{$l/​text()}"​ annee="​{$a/​text()}">​
 +  {
 +                 for $j in document("​joueur.xml"​)//​joueur[nujoueur=$r/​nugagnant or nujoueur=$r/​nuperdant]
 +                 ​return ​
 +                    <​participant nom="​{$j/​nom/​text()}"​ prenom="​{$j/​prenom/​text()}"​ />
 +                 }
 +
 +                 </​tournoi>​
 +              ​
 +           }
 +</​tournois>​
 </​code>​ </​code>​
  
-pour chaque année, donner le nombre tournois auxquels chaque joueur a participé. ​pour chaque année, donner le nombre tournois auxquels chaque joueur a participé. Le résultat doit être [[site:​enseignement:​master:​mlbda:​tmes:​xquery:​res2.txt]]+  * pour chaque année, donner le nombre tournois auxquels chaque joueur a participé. ​ 
 <code xquery> <code xquery>
-</code>+<reponse>​ 
 +    { 
 +     for $a in distinct-values(document("​rencontre.xml"​)//​annee) sort by (.)  
 +      return ​  
 +               <​annee valeur="​{$a/​text()}">​ 
 +              { 
 +               for $j in document("​joueur.xml"​)//​joueur 
 +               let $r := document("​rencontre.xml"​)//​rencontre[annee=$a and (nugagnant=$j/​nujoueur or nuperdant=$j/​nujoueur)],​ 
 +                $nbt:= count(distinct-values($r/lieutournoi)) 
 +               where $nbt 0
  
-</showif >+              {-- order by $nbt, $j/nom --} 
 + 
 +               ​return <joueur nom="​{$j/​nom/​text()}"​ tournois="​{$nbt}"/>​ 
 +              } 
 +              </​annee>​ 
 +          } 
 +</​reponse>​ 
 +</​code>​ 
 +</​showif>​
  
 ===== Exercice 3 ===== ===== Exercice 3 =====
site/enseignement/master/mlbda/tmes/xquery.1606051994.txt.gz · Dernière modification: 22/11/2020 14:33 par amine