Considerando a tabela e os dados abaixo:

create table pessoa (pessoa VARCHAR(15), pai VARCHAR(15));

insert into pessoa values ('pai 1', null);
insert into pessoa values ('pai 2', null);
insert into pessoa values ('filho 1.1', 'pai 1');
insert into pessoa values ('filho 1.2', 'pai 1');
insert into pessoa values ('filho 2.1', 'pai 2');
insert into pessoa values ('filho 1.3', 'pai 1');
insert into pessoa values ('filho 1.4', 'pai 1');
insert into pessoa values ('filho 2.2', 'pai 2');


Gostaria de fazer uma consulta trazendo a hierarquia .... por exemplo no
Oracle ... faço dessa forma:


select * from pessoa p
start with pai is null
connect by prior p.pessoa = p.pai;


RESULTADO:

pessoa        pai
-------        -----
pai 1
filho 1.1    pai 1
filho 1.2    pai 1
filho 1.3    pai 1
filho 1.4    pai 1
pai 2
filho 2.1    pai 2
filho 2.2    pai 2



Utilizando o PostgreSQL 9.0, fiz dessa forma:


with recursive p1 (pessoa, pai) as (
    select pessoa, pai from pessoa where pai is null
    union all
    select p.pessoa, p.pai from pessoa p, p1 where p.pai = p1.pessoa
)
select * from p1;


Porém o resultado ficou estranho ... como segue


RESULTADO:

pessoa        pai
-------        -----
pai 1
pai 2
filho 1.1    pai 1
filho 1.2    pai 1
filho 1.3    pai 1
filho 1.4    pai 1



Alguém poderia me ajudar ... preciso que o resultado se apresenta da mesma
forma como no Oracle !!

Valeu ! 
-- 
View this message in context: 
http://postgresql.1045698.n5.nabble.com/Consulta-hierarquica-no-PostgreSQL-tp3304742p3304742.html
Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a