Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
enseignement:tp:bd:tp-xml-sql [2012/07/03 13:32]
ecoquery créée
enseignement:tp:bd:tp-xml-sql [2017/10/23 16:38]
ecoquery [XMLForest]
Ligne 58: Ligne 58:
 On se replace dans le contexte d'une base de données sur le forum de discussions. Ecrire une requête qui pour chaque message génère un //élément// XML "''message''" avec un //élément// "''contenu''" incluant le corps du message et un //élément// "''date''" incluant la date du message.  On se replace dans le contexte d'une base de données sur le forum de discussions. Ecrire une requête qui pour chaque message génère un //élément// XML "''message''" avec un //élément// "''contenu''" incluant le corps du message et un //élément// "''date''" incluant la date du message. 
  
-<color black/#ffcccc>**Correction:**</color><code sql>+<wrap important>**Correction:**</wrap><code sql>
       select xmlelement(name "message",       select xmlelement(name "message",
                         xmlelement(name "contenu", corps),                         xmlelement(name "contenu", corps),
Ligne 76: Ligne 76:
 Ecrire une requête qui pour chaque message génère un //élément// "''message''" avec un //attribut// "''id_message''", un //attribut// "''date''", un //attribut// "''auteur''" ayant pour valeur l'identifiant de l'auteur et enfin le corps du message comme //contenu// Ecrire une requête qui pour chaque message génère un //élément// "''message''" avec un //attribut// "''id_message''", un //attribut// "''date''", un //attribut// "''auteur''" ayant pour valeur l'identifiant de l'auteur et enfin le corps du message comme //contenu//
  
-<color black/#ffcccc>**Correction:**</color><code sql>+<wrap important>**Correction:**</wrap><code sql>
 select xmlelement(name "message", select xmlelement(name "message",
                   xmlattributes(id as "id_message",                   xmlattributes(id as "id_message",
Ligne 87: Ligne 87:
 Que peut-on remarquer sur la casse des nom d'attributs? Modifier la requête (si besoin) pour que tous les noms soient en minuscules.  Que peut-on remarquer sur la casse des nom d'attributs? Modifier la requête (si besoin) pour que tous les noms soient en minuscules. 
  
-<color black/#ffcccc>**Correction:**</color><code sql>+<wrap important>**Correction:**</wrap><code sql>
       select xmlelement(name "message",       select xmlelement(name "message",
                         xmlattributes(id as "id_message",                         xmlattributes(id as "id_message",
Ligne 106: Ligne 106:
 Modifier la requête précédente en utilisant cette fonction pour mettre le corps du message dans un //élément// "''CORPS''" et l'email de l'auteur dans un //élément// "''mailAuteur''" Modifier la requête précédente en utilisant cette fonction pour mettre le corps du message dans un //élément// "''CORPS''" et l'email de l'auteur dans un //élément// "''mailAuteur''"
  
-<color black/#ffcccc>**Correction:**</color><code sql>+<wrap important>**Correction:**</wrap><code sql>
       select xmlelement(name "message",       select xmlelement(name "message",
                         xmlattributes(message.id as "id_message",                         xmlattributes(message.id as "id_message",
Ligne 112: Ligne 112:
                                       auteur as "auteur"),                                       auteur as "auteur"),
                         xmlforest(corps, email as "mailAuteur")) as resultat                         xmlforest(corps, email as "mailAuteur")) as resultat
-      from message, utilisateur +      from message, membre 
-      where auteur=utilisateur.id;+      where auteur=membre.id;
 </code>      </code>     
  
Ligne 128: Ligne 128:
 Modifier la requête précédente pour ajouter à chaque élément message un //élément// "''reponse''" avec comme contenu l'identifiant de la réponse, et cela pour chacune des réponses à ce message (on ne traitera que les messages ayant des réponses).  Modifier la requête précédente pour ajouter à chaque élément message un //élément// "''reponse''" avec comme contenu l'identifiant de la réponse, et cela pour chacune des réponses à ce message (on ne traitera que les messages ayant des réponses). 
  
-<color black/#ffcccc>**Correction:**</color><code sql>+<wrap important>**Correction:**</wrap><code sql>
       select xmlelement(name "message",       select xmlelement(name "message",
                         xmlattributes(m1.id as "id_message",                         xmlattributes(m1.id as "id_message",
Ligne 144: Ligne 144:
 Remplacer la jointure sur les messages par un LEFT OUTER JOIN. Que peut-on remarquer pour les messages n'ayant pas de réponse? Remplacer la jointure sur les messages par un LEFT OUTER JOIN. Que peut-on remarquer pour les messages n'ayant pas de réponse?
  
-<color black/#ffcccc>**Correction:**</color><code sql>+<wrap important>**Correction:**</wrap><code sql>
       select xmlelement(name "message",       select xmlelement(name "message",
                         xmlattributes(m1.id as "id_message",                         xmlattributes(m1.id as "id_message",
Ligne 158: Ligne 158:
 </code> </code>
            
-<color black/#ffcccc>Les messages sans réponse possèdent un élément <nowiki><reponse></nowiki> vide.</color>+<wrap important>Les messages sans réponse possèdent un élément <nowiki><reponse></nowiki> vide.</wrap>
  
  
Ligne 165: Ligne 165:
 Créer une vue qui à chaque identifiant de message associe sa représentation XML telle que décrite ci-dessus. Créer une vue qui à chaque identifiant de message associe sa représentation XML telle que décrite ci-dessus.
  
-<color black/#ffcccc>**Correction:**</color><code sql> +<wrap important>**Correction:**</wrap><code sql> 
      create or replace view message_id_xml as      create or replace view message_id_xml as
      select m1.id, xmlelement(name "message",      select m1.id, xmlelement(name "message",
Ligne 182: Ligne 182:
 Créer une vue qui crée un document XML contenant l'ensemble des messages sous la forme donnée précédemment.  Créer une vue qui crée un document XML contenant l'ensemble des messages sous la forme donnée précédemment. 
  
-<color black/#ffcccc>**Correction:**</color><code sql> +<wrap important>**Correction:**</wrap><code sql> 
       create or replace view messages_xml as        create or replace view messages_xml as 
       select xmlelement(name "messages",       select xmlelement(name "messages",
Ligne 188: Ligne 188:
       from message_id_xml;       from message_id_xml;
 </code> </code>
-<color black/#ffcccc+<wrap important
-On peut tester avec:</color>+On peut tester avec:</wrap>
 <code sql> <code sql>
 select (messages) select (messages)
Ligne 224: Ligne 224:
  
  
-<color black/#ffcccc>**Correction:**</color><code sql> +<wrap important>**Correction:**</wrap><code sql> 
 SELECT XMLQuery(' SELECT XMLQuery('
 let $msg := $m/message, let $msg := $m/message,
Ligne 248: Ligne 248:
 Faire une vue de la requête précédente, puis créer une autre vue qui va générer le document HTML entier.  Faire une vue de la requête précédente, puis créer une autre vue qui va générer le document HTML entier. 
  
-<color black/#ffcccc>**Correction:** +<wrap important>**Correction:** 
-Pour créer la première vue, il suffit d'ajouter  create or replace view message_html as  au début de la requête et d'ajouter ''AS ITEM'' après ''RETURNING CONTENT)''. Le code pour la deuxième vue est: </color>+Pour créer la première vue, il suffit d'ajouter  create or replace view message_html as  au début de la requête et d'ajouter ''AS ITEM'' après ''RETURNING CONTENT)''. Le code pour la deuxième vue est: </wrap>
 <code sql> <code sql>
         create or replace view tous_messages_html as         create or replace view tous_messages_html as
Ligne 261: Ligne 261:
         from message_html;         from message_html;
 </code> </code>
-<color black/#ffcccc>Pour tester:</color>+<wrap important>Pour tester:</wrap>
 <code sql> <code sql>
         select (html_code) from tous_messages_html         select (html_code) from tous_messages_html
 </code> </code>