Oracle
 sql >> Base de données >  >> RDS >> Oracle

Tableau XML avec Oracle 11g

Essayez ceci :

select      X.COUNTRYNAME, Y.STATENAME
from        XMLTEMP
           ,xmltable('/countries/country'
                     passing MYDOC
                     columns COUNTRYNAME varchar2(20) path './name', 
                             STATES xmltype path './states') X,
            xmltable('/states/state/name' passing X.STATES 
                    columns STATENAME varchar2(20) path '.') (+) Y

Parce que vous avez plusieurs états, vous devez vous joindre à une autre table xml. Comme certains pays n'ont pas d'états, il doit s'agir d'une jointure externe gauche. J'utilise l'ancienne méthode de (+) comme j'essaie ceci sur 10g et il semble qu'il y ait un problème en utilisant left outer join en 10g mais apparemment ça devrait aller en 11g .