Auto Relacionamento

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jctq
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 08 Fev 2006 1:21 pm
Localização: São Gonçalo
Att,
Julio Quintão

Srs . alguém teria algum exemplo de Auto Relacionamento.

Agradeço mais uma vez !!!
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

Um auto-relacionamento é um relacionamento feito com a própria tabela.
Um exemplo disso, é quando queremos agrupar coisas:

Selecionar tudo

EMPREGADO NOME        CHEFE
--------- ----------- -----
10        JOAO        40
20        PEDRO       40 
30        CARLOS      40
40        THE BOSS
Veja a tabela acima... Todos empregados tem um chefe (o 40) que é uma das pessoas cadastradas. O 40 não tem nenhum chefe, aí o campo de auto-relacionamento fica em branco.


Para criar, pode fazer assim (usando a tabela acima):

Selecionar tudo

alter table EMPREGADOS
  add constraint EMPR_EMPR_FK foreign key (CHEFE)
  references EMPREGADOS (EMPREGADO);

Para consultar os auto-relacionamentos que existem, dá pra fazer assim:

Selecionar tudo

select a.table_name
from user_constraints a
where exists (select 1 
              from user_constraints b 
              where a.constraint_name=b.r_constraint_name 
                and a.table_name     =b.table_name)
xandesantos
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Ter, 12 Jun 2007 9:10 am
Localização: Salvador-BA

Apesar deste tópico ser um pouco antigo, queria aproveitá-lo para tirar uma dúvida que surgiu aqui no trabalho.

Na tabela de exemplo EMPREGADOS, como ficaria a query de Select para que fosse listados todos os empregados com código, nome, código do chefe e nome do chefe?
Responder
  • Informação
  • Quem está online

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