Em 15/12/10, Rodrigo Santana<[email protected]> escreveu: > > 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 >
Creio qu é só usar a clásula ORDER BY adequada: WITH RECURSIVE p1(pessoa, pai) AS ( SELECT pessoa, pai FROM pessoas WHERE pai is null UNION ALL SELECT p.pessoa, p.pai FROM pessoas p, p1 WHERE p.pai = p1.pessoa ) SELECT * FROM p1 ORDER BY coalesce(pai,pessoa), pai NULLS FIRST, pessoa; 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 (8 linhas) Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
