Собственно цель простая - вывести иерархическую таблицу в порядке иерархии
CREATE TABLE foo(ID,ParentID,Caption)
node000 node010 node020 node021 node100 node110 node200 ...
У меня есть рекурсивная процедура, которая легко все это делает, но я вот наткнулся на функцию connectby и захотелось сделать с ее помощью, но она возвращает иерархию только одного родителя, а мне нужно все.
Самое простое сделать так
declare id1 text; begin FOR id1 IN SELECT id::text FROM foo WHERE ParentID IS NULL loop RETURN QUERY SELECT * FROM foo JOIN connectby('foo','ID','ParentID','Caption', id1 ,0) AS cb(keyid int, parent_keyid int, level int, pos int) ON foo.id=cb.keyid end loop; end;
Может можно как-то без цикла одним запросом?
выкрутился
выкрутился так: