Существует несколько способов сделать то, в чем Вы нуждаетесь в PostgreSQL.
, Если можно установить модули, посмотрите на tablefunc contrib. Это имеет connectby () функция, которая обрабатывает пересекающие деревья. http://www.postgresql.org/docs/8.3/interactive/tablefunc.html
Также проверяет ltree contrib, который Вы могли адаптировать свою таблицу для использования: http://www.postgresql.org/docs/8.3/interactive/ltree.html
Или можно пересечь дерево сами с функцией PL/PGSQL.
Что-то вроде этого:
create or replace function example_subtree (integer)
returns setof example as
'declare results record;
child record;
begin
select into results * from example where parent_id = $1;
if found then
return next results;
for child in select id from example
where parent_id = $1
loop
for temp in select * from example_subtree(child.id)
loop
return next temp;
end loop;
end loop;
end if;
return null;
end;' language 'plpgsql';
select sum(value) as value_sum
from example_subtree(1234);
$('sometag').html('<div>' + $('sometag').html() + '</div>');