Boa tarde,
Tenho uma tabela de centro de custos hierárquica:
COD, CODPAI, CONTA, DESCRICAO
e tenho uma tabela com os usuários que pertencem a cada centro de custos:
CODCC, CODUSUARIO
Dados dois usuários A e B, preciso verificar se o usuário A está no mesmo nível ou abaixo do usuário B. Montei uma função PL/SQL, mas o desempenho está ruim.
É possivel montar diretamente em uma consulta SQL?
O Oracle tem algum recurso relacionado que ajude nesse caso?
Query hierárquica
- dr_gori
- Moderador
- Mensagens: 5026
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Sim. CONNECT BY.
Aqui no form tem vários exemplos.
Veja esse tirado do manual da Oracle: (nesse caso, fazendo a ligaçao pelo GERENTE, que também é um funcionario)
https://docs.oracle.com/cd/B19306_01/se ... ies003.htm
Aqui no form tem vários exemplos.
Veja esse tirado do manual da Oracle: (nesse caso, fazendo a ligaçao pelo GERENTE, que também é um funcionario)
SELECT last_name "Employee", CONNECT_BY_ISCYCLE "Cycle",
LEVEL, SYS_CONNECT_BY_PATH(last_name, '/') "Path"
FROM employees
WHERE level <= 3 AND department_id = 80
START WITH last_name = 'King'
CONNECT BY NOCYCLE PRIOR employee_id = manager_id AND LEVEL <= 4;
Employee Cycle LEVEL Path
------------------------- ------ ------ -------------------------
Russell 1 2 /King/Russell
Tucker 0 3 /King/Russell/Tucker
Bernstein 0 3 /King/Russell/Bernstein
Hall 0 3 /King/Russell/Hall
Olsen 0 3 /King/Russell/Olsen
Cambrault 0 3 /King/Russell/Cambrault
Tuvault 0 3 /King/Russell/Tuvault
Partners 0 2 /King/Partners
King 0 3 /King/Partners/King
Sully 0 3 /King/Partners/Sully
McEwen 0 3 /King/Partners/McEwen
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot], Google [Bot] e 1 visitante