* pnNodeNo = topmost node of the desired subtree select node.nodeno as n1, ; lvl2.nodeno as n2, ; lvl3.nodeno as n3, ; lvl4.nodeno as n4, ; lvl5.nodeno as n5, ; lvl6.nodeno as n6, ; lvl7.nodeno as n7, ; lvl8.nodeno as n8, ; lvl9.nodeno as n9, ; lvl10.nodeno as n10 ; from node ; left join node as lvl2 on node.nodeno = lvl2.parentnodeno ; left join node as lvl3 on lvl2.nodeno = lvl3.parentnodeno ; left join node as lvl4 on lvl3.nodeno = lvl4.parentnodeno ; left join node as lvl5 on lvl4.nodeno = lvl5.parentnodeno ; left join node as lvl6 on lvl5.nodeno = lvl6.parentnodeno ; left join node as lvl7 on lvl6.nodeno = lvl7.parentnodeno ; left join node as lvl8 on lvl7.nodeno = lvl8.parentnodeno ; left join node as lvl9 on lvl8.nodeno = lvl9.parentnodeno ; left join node as lvl10 on lvl9.nodeno = lvl10.parentnodeno ; into cursor _subtree ; where node.nodeno = pnNodeNothen you can process the _subtree cursor and put the non-null values into another cursor which is a list of nodeno values.