Query hierárquica

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

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?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

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)

Selecionar tudo

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
https://docs.oracle.com/cd/B19306_01/se ... ies003.htm
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 29 visitantes