Muito Obrigado Walter, vou ler a matéria!

Walter Cruz <[EMAIL PROTECTED]> escreveu:
Oi Luiz!

Nativamente, você não tem como fazer uma consulta hierárquica. Isso
porque para isso são necessários SQL Recursivos, e isso apesar de
definido do padrão SQL-99 ainda não foi implementado pelo PostgreSQL
(até onde eu saiba, o único que implementou isso até agora foi o DB2).
O Oracle implementa isso fugindo um pouco do padrão.

Embora não seja possível nativamente, dá pra escrever uma função em
pl/pgsql que faça o trabalho. Depois de quebrar a cabeça com queries
recursivas esse mês, saiu na SQL Magazine um artigo sobre consultas
recursivas no PostgreSQL. É um artigo do Rodrigo Hjort, que participa
da lista também.

Dá uma olhada nesse artigo, será bem útil no seu caso!

[]'s
- Walter


> Message: 6
> Date: Thu, 28 Sep 2006 17:46:32 +0000 (GMT)
> From: Luiz André Helfer <[EMAIL PROTECTED]>
> Subject: [PostgreSQL-Brasil] PostgreSQL - Select para uma hierarquia
> To: [email protected]
> Message-ID: <[EMAIL PROTECTED]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Olá pessoal!
>
> Gostaria de saber se no PostgreSQL existe um select que mostre a estrutura
> hierarquica de uma tabela.
>
> Exemplo:
>
> tabela A
>
> cd_a
> tp_a
>
> Tabela B
>
> cd_b
> tp_b
> A_cd_a
> A_cd_a_sub
>
> A tabela "A" tem filhos na "B" (A_Cd_a) e a tabela "B" pode não ser
> terminal e gerar uma row na tabela "A" (A_Cd_a_sub) e assim sucessivamente
> até o último nivel. Como retornar esta hierarquia em um select?
>
> Outro exemplo é um Plano de Conta Contábil que possui um
> auto-relacionamento que possui diversos níveis (ex: 1 até 9) e o último grau
> seria o terminal. Como retornar a hierarquia de um conta ora tendo o PAI ora
> tendo o FILHO..?
>
> Agradeço se alguém puder me ajudar!
>
> em Oracle tem algo semelhante..... exemplo em Oracle
>
> Select Mod.Nome_Modulo
> , Sys_Connect_By_Path (Mod.Nome_Modulo, '/')
> , Mod.Mod_Id Id
> , Mod.Usr_Userid
> , Mod.Mod_Mod_Id
> From Modulo Mod
> Where Mod.Sn_Ativo = 'S'
> And Mod.Usr_Userid = 'XXXXXXX'
> And Mod.Tipo_Modulo = 3
> Connect By Prior
> Mod.Mod_Id = Mod.Mod_Mod_Id
> Start With
> Mod.Mod_Mod_Id Is Null
>
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios



Grato,
  .
 . .
. . .
Helfer, Luiz André


Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas!
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a