Bom, como segue abaixo o problema é que as linhas no Oracle retornam sempre classificadas ... por exemplo tenho dois "pais" na minha tabela ... ao realizar o select ele retorna o primeiro pai e seus fillhos e depois o segundo pai e seus respsctivos filhos. No postgresql, usando o with recursive como mostrei ele retorna diretamente os dois pais e depois só aparecem os filhos do primeiro pai ... Preciso que as informações se apresentem como no Oracle !
RESULTADO ORACLE: 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 RESULTADO POSTGRESQL: 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 Rodrigo-FS > Date: Tue, 14 Dec 2010 14:12:39 -0200 > From: [email protected] > To: [email protected] > Subject: Re: [pgbr-geral] Consulta hierarquica no PostgreSQL > > Em 14/12/10, rodfs<[email protected]> escreveu: > > > > 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 !! > > > > > Seu problema se refere apenas à classificação das linhas? > Dados faltando? > Alguma outra coisa? > > Osvaldo > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
