Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle XMLTable - извличане на колона от родителски възел

Вие търсите ./parent_node , което е <parent_node> под текущия <child> възел. А това не съществува.

Просто трябва да отидете ниво нагоре:

parent_value NUMBER (10) PATH './../parent_value'

Демо с вашия CTE и само това добавено ../ :

WITH xtbl AS (SELECT xmltype ('<root>
                    <parent>
                         <parent_id>1</parent_id>
                         <parent_value>10000</parent_value>
                         <child>
                              <child_id>11</child_id>
                              <other_value>1000</other_value>
                         </child>
                         <child>
                              <child_id>12</child_id>
                              <other_value>1000</other_value>
                         </child>
                    </parent>
                </root>') AS xcol FROM dual)
      SELECT myXmlTable.*
        FROM xtbl
             CROSS JOIN
             xmltable ('/root/parent/child'
                       PASSING xcol
                       COLUMNS child_id NUMBER (5) PATH 'child_id',
                               parent_value NUMBER (10) PATH './../parent_value') myXmlTable;

  CHILD_ID PARENT_VALUE
---------- ------------
        11        10000
        12        10000


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавяне на обединени данни към резултат от заявка

  2. Премахнете числата, намерени в колоната с низове

  3. Как да проверя версията на JDK в Oracle?

  4. Команди за архивиране на RMAN

  5. Топ заявки за първичен ключ в Oracle с примери