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 !!
Pergunta
Rodrigo-FS
Considerando a tabela e os dados abaixo:
Gostaria de fazer uma consulta trazendo a hierarquia .... por exemplo no Oracle ... faço dessa forma: Utilizando o PostgreSQL 9.0, fiz dessa forma: Porém o resultado ficou estranho ... como segueAlguém poderia me ajudar ... preciso que o resultado se apresenta da mesma forma como no Oracle !!
Valeu !
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.