Bonjour,
J'ai un fichier XML stocké dans un XMLTYPE ayant cette structure :
Je dois extraire cette infos du groupe et des sous-groupes.
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 <root> <Groupe> <Id>A</Id> <Entete> <Info> <Nom>Blablabla</Nom> </Info> </Entete> <Detail> <SousGroupe> <Id>1</Id> </SousGroupe> <SousGroupe> <Id>2</Id> </SousGroupe> </Detail> </Groupe> <Groupe> <Id>B</Id> <Entete> <Info> <Nom>Inconnu</Nom> </Info> </Entete> </Groupe> <Groupe> <Id>C</Id> <Entete> <Info> <Nom>Toto</Nom> </Info> </Entete> <Detail> <SousGroupe> <Id>1</Id> </SousGroupe> <SousGroupe> <Id>2</Id> </SousGroupe> </Detail> </Groupe> </root>
J'ai fais une requête comme ceci :
Or comme le groupe peut avoir ou pas de sous-groupes, la requête ci-dessus me renvoie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT extractValue(t1.column_value, '/Groupe/Id'), extractValue(t1.column_value, '/Groupe/Entete/Info/Nom'), , extractValue(t2.column_value, '/Detail/SousGroupe/Id') FROM xml_table s , TABLE (xmlsequence (extract (s.XML_DOCUMENT, '/Root/Groupe'))) t1 , TABLE (xmlsequence (extract (value(t1), '*/Detail'))) t2 ;
Or je veux que la requete me renvoie tous les groupes, même ceux sans sous-groupe :Id Nom SousGroupe
-- ------- ----------
A Blablabla 1
A Blablabla 2
C Toto 1
C Toto 2
En gros, je veux faire une jointure ouverte pour extraire des infos dans du XMLTYPE.Id Nom SousGroupe
-- ------- ----------
A Blablabla 1
A Blablabla 2
B Inconnu
C Toto 1
C Toto 2
Et ça je ne sais pas faire. Donc j'ai besoin de votre aide.
Merci.
Partager