select * from orgaos
codigo | codigo_pai | sigla |
---|---|---|
3 | 2 | SAGI |
1 | null | PR |
4 | 3 | DGI |
5 | 3 | DFD |
6 | 3 | DM |
7 | 3 | DA |
2 | 1 | MDS |
12 | 1 | MTE |
13 | 1 | MRE |
11 | 3 | Gab/SAGI |
A consulta abaixo:
with recursive org (sigla, codigo, codigo_pai, path,deep,nome) as (
select sigla, codigo, codigo_pai, array[codigo],1, nome
from orgaos
where codigo_pai is null
union all
select o1.sigla, o1.codigo, o1.codigo_pai, path || o1.codigo ,o2.deep+1, o1.nome
from orgaos o1, org o2
where o2.codigo = o1.codigo_pai
)
select * from org
me gerou
orgao | orgao_pai | sigla | path | deep |
1 | PR | {1} | 1 | |
2 | 1 | MDS | {1,2} | 2 |
3 | 2 | SAGI | {1,2,3} | 3 |
4 | 3 | DGI | {1,2,3,4} | 4 |
5 | 3 | DFD | {1,2,3,5} | 4 |
6 | 3 | DM | {1,2,3,6} | 4 |
7 | 3 | DA | {1,2,3,7} | 4 |
11 | 3 | Gab/SAGI | {1,2,3,11} | 4 |
12 | 1 | MTE | {1,12} | 2 |
13 | 1 | MRE | {1,13} | 2 |
Nenhum comentário:
Postar um comentário