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

SQL Oracle Discussion :

Oracle/XML avec une requete imbriquée


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 104
    Par défaut Oracle/XML avec une requete imbriquée
    Bonjour à tous,

    y à t'il une possibilité de sélectionner directement à partir d'une requête imbriquée ( de style table avec une jointure avec une sous table) la structure XML adéquate

    exemple de requete :

    select tableMaitre.champ1, tableEsclave.Champ2
    from tableMaitre, tableEsclave
    where tableEsclave.foreignkey=tableMaitre.Key

    la structure xml que je voudrais avoir est :
    ROWSET>
    <ROW num="1">
    <champ1>donneechamp1
    <Champ2>donneechamp2</Champ2>
    </champ1>
    </ROW>
    </ROWSET>

    j'ai essayer avec dbms_XMLQuery.getXML mais j'ai toujours une structure simple

    merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select 
    dbms_xmlgen.getxml('select tableMaitre.champ1, tableEsclave.Champ2 from tableMaitre, tableEsclave where tableEsclave.foreignkey=tableMaitre.Key') from dual;
    PS: tu veux que champ2 fasse partie de champ1?

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    que penses-tu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select 
      xmlelement(
        emp,
        xmlagg(
          xmlelement(
            dept,
            xmlattributes(deptno),
            xmlagg(sys_xmlgen(empno))))) 
    from emp 
    group by deptno;
    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
     
    <EMP>
      <DEPT DEPTNO="10">
        <EMPNO>7782</EMPNO>
        <EMPNO>7839</EMPNO>
        <EMPNO>7934</EMPNO>
      </DEPT>
      <DEPT DEPTNO="20">
        <EMPNO>7369</EMPNO>
        <EMPNO>7902</EMPNO>
        <EMPNO>7876</EMPNO>
        <EMPNO>7788</EMPNO>
        <EMPNO>7566</EMPNO>
      </DEPT>
      <DEPT DEPTNO="30">
        <EMPNO>7499</EMPNO>
        <EMPNO>7698</EMPNO>
        <EMPNO>7654</EMPNO>
        <EMPNO>7844</EMPNO>
        <EMPNO>7900</EMPNO>
        <EMPNO>7521</EMPNO>
      </DEPT>
    </EMP>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 104
    Par défaut
    Bonjour,

    Je pense qu c'est une piste mais j'ai deux question :

    - est ce que c'est normal de ne pas avoir une jointure entre les deux tables emp et dept?
    - comment je pourrai recupérer le résultat de cette requete?

    Merci d'avance
    Citation Envoyé par laurentschneider
    que penses-tu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select 
      xmlelement(
        emp,
        xmlagg(
          xmlelement(
            dept,
            xmlattributes(deptno),
            xmlagg(sys_xmlgen(empno))))) 
    from emp 
    group by deptno;
    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
     
    <EMP>
      <DEPT DEPTNO="10">
        <EMPNO>7782</EMPNO>
        <EMPNO>7839</EMPNO>
        <EMPNO>7934</EMPNO>
      </DEPT>
      <DEPT DEPTNO="20">
        <EMPNO>7369</EMPNO>
        <EMPNO>7902</EMPNO>
        <EMPNO>7876</EMPNO>
        <EMPNO>7788</EMPNO>
        <EMPNO>7566</EMPNO>
      </DEPT>
      <DEPT DEPTNO="30">
        <EMPNO>7499</EMPNO>
        <EMPNO>7698</EMPNO>
        <EMPNO>7654</EMPNO>
        <EMPNO>7844</EMPNO>
        <EMPNO>7900</EMPNO>
        <EMPNO>7521</EMPNO>
      </DEPT>
    </EMP>

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    je peux faire une jointure sans problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select 
      xmlelement(
        emp,
        xmlagg(
          xmlelement(
            dept,
            xmlattributes(dname,deptno),
            xmlagg(sys_xmlgen(ename))))) 
    from emp join dept using (deptno) 
    group by deptno,dname;
    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
     
    <EMP>
      <DEPT DNAME="ACCOUNTING" DEPTNO="10">
        <ENAME>CLARK</ENAME>
        <ENAME>KING</ENAME>
        <ENAME>MILLER</ENAME>
      </DEPT>
      <DEPT DNAME="RESEARCH" DEPTNO="20">
        <ENAME>SMITH</ENAME>
        <ENAME>FORD</ENAME>
        <ENAME>ADAMS</ENAME>
        <ENAME>SCOTT</ENAME>
        <ENAME>JONES</ENAME>
      </DEPT>
      <DEPT DNAME="SALES" DEPTNO="30">
        <ENAME>ALLEN</ENAME>
        <ENAME>BLAKE</ENAME>
        <ENAME>MARTIN</ENAME>
        <ENAME>TURNER</ENAME>
        <ENAME>JAMES</ENAME>
        <ENAME>WARD</ENAME>
      </DEPT>
    </EMP>

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 104
    Par défaut
    la version d'oracle que j'utilise est la 9.0.1.0.0
    lorsque je lance cette requete, je ne recois aucun résultat
    y-à t-il des scripts qu'il faut les lancer?

    Citation Envoyé par laurentschneider
    je peux faire une jointure sans problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select 
      xmlelement(
        emp,
        xmlagg(
          xmlelement(
            dept,
            xmlattributes(dname,deptno),
            xmlagg(sys_xmlgen(ename))))) 
    from emp join dept using (deptno) 
    group by deptno,dname;
    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
     
    <EMP>
      <DEPT DNAME="ACCOUNTING" DEPTNO="10">
        <ENAME>CLARK</ENAME>
        <ENAME>KING</ENAME>
        <ENAME>MILLER</ENAME>
      </DEPT>
      <DEPT DNAME="RESEARCH" DEPTNO="20">
        <ENAME>SMITH</ENAME>
        <ENAME>FORD</ENAME>
        <ENAME>ADAMS</ENAME>
        <ENAME>SCOTT</ENAME>
        <ENAME>JONES</ENAME>
      </DEPT>
      <DEPT DNAME="SALES" DEPTNO="30">
        <ENAME>ALLEN</ENAME>
        <ENAME>BLAKE</ENAME>
        <ENAME>MARTIN</ENAME>
        <ENAME>TURNER</ENAME>
        <ENAME>JAMES</ENAME>
        <ENAME>WARD</ENAME>
      </DEPT>
    </EMP>

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 104
    Par défaut
    Bonjour,
    mais cette commande donne la structure suivante :

    ROWSET>
    <ROW num="1">
    <champ1>donneechamp1</champ1>
    <Champ2>donneechamp2</Champ2>
    </ROW>
    </ROWSET>

    Citation Envoyé par laurentschneider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select 
    dbms_xmlgen.getxml('select tableMaitre.champ1, tableEsclave.Champ2 from tableMaitre, tableEsclave where tableEsclave.foreignkey=tableMaitre.Key') from dual;
    PS: tu veux que champ2 fasse partie de champ1?

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

Discussions similaires

  1. [XSLT 1.0] Transformation d'un XML avec une hiérarchie imbriquée en XML simple
    Par ekoralewski dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 25/03/2011, 11h24
  2. Réponses: 1
    Dernier message: 21/11/2006, 13h28
  3. cmt se connecté a oracle pour faire une requete avec python
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 28/12/2005, 20h22
  4. [C#] Erreur Oracle avec une requete paramétrée
    Par gael.mases dans le forum C#
    Réponses: 1
    Dernier message: 02/12/2005, 10h39
  5. [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Par nivet dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/11/2004, 13h43

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