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

Responder a