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