sql >> Databáze >  >> RDS >> Oracle

Oracle XMLTable – načítání sloupce z nadřazeného uzlu

Hledáte ./parent_node , což je <parent_node> pod aktuální <child> uzel. A to neexistuje.

Stačí jít o úroveň výš:

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

Demo s vaším CTE a právě s tím přidaným ../ :

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. Jak získám ID řádků, které mají hodnoty MAX a MIN v SQL

  2. Zvýšení řetězce o jednu v PHP

  3. Názvy sloupců SQL a jejich porovnání se záznamy řádků v jiné tabulce v PostgreSQL

  4. Jak COT() funguje v MariaDB