› Fóruns › Developer,Designer e Discoverer › Arvore hierarquica ! › Arvore hierarquica !
[quote=”Litz”:3irugyk2]Olá Branco, para isso é necessário utilizar funções recursivas. Bom segue um exemplo de um menu que fiz utilizando uma unica tabela.
create table MENU_TESTE
(
ID_MENU NUMBER(8) not null,
DESCRICAO VARCHAR2(40),
ID_MENU_PAI NUMBER(8)
);
alter table MENU_TESTE
add primary key (ID_MENU);
alter table MENU_TESTE
add constraint FK_TESTE_MENU foreign key (ID_MENU_PAI)
references MENU_TESTE (ID_MENU);
insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
values (1, 'Pai 1', null);
insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
values (2, 'Filho 11', 1);
insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
values (3, 'Neto 111', 2);
insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
values (4, 'Neto 112', 2);
insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
values (5, 'Pai 2', null);
insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
values (6, 'Filho 21', 5);
insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
values (7, 'Filho 22', 5);
E o select que monta o menu:
select M.ID_MENU,
lpad(' ', 10 * (level - 1)) || M.DESCRICAO
from MENU_TESTE M
connect by prior M.ID_MENU = M.ID_MENU_PAI
start with M.ID_MENU = 1
order siblings by M.ID_MENU
É lógico que existem outras forma de fazer um menu, mas esta é uma delas, provavelmente a mais simples.
Agora é com vc só adequar a tua necessidade.
Vlw Leonardo Litz[/quote]
ta mas como faço pra tacar isso dentro do objeto arvore no form ?
grato
Branco