Página 1 de 1

Auto Relacionamento

Enviado: Qua, 29 Nov 2006 4:45 pm
por jctq
Srs . alguém teria algum exemplo de Auto Relacionamento.

Agradeço mais uma vez !!!

Enviado: Qui, 07 Dez 2006 10:42 am
por dr_gori
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)

Enviado: Ter, 26 Jun 2007 11:10 am
por xandesantos
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?