Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vanilson

Como auto relacionar tabelas

Recommended Posts

Pessoal é o seguinte, eu tenho uma tabela que precisa se auto relacionar que é estudante esse estudante tambem serve como conselheiro para outros estudantes significa disser que o nome do conselheiro devera estar na tabela estudante, a minha dificuldade está em auto relacionar esta tabela ou seja colocar o codigo do conselheiro que é o codigo do estudante na tabela estudante

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mesmo da síntaxe da FK só que aponta para a própria tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mota seguinte, fiz o que tu disseste agora eu estou a tentar ver o conselheiro de cada estudante eu tenho mais uma tabela matricula que tem a FK de estudante e a tabela que auto relaciono é a matricula faço isso pq um estudante só tem conselheiro quando está matriculado, só q não funciona ele me da apenas o codigo do conselheiro e o nome do estudante. A query é esta:

 

select e.nome_estudante, me.conselheiro from estudantes e, matriculas_estudantes me where
e.codigo_estudantes = me.codigo_estudantes;

 

Ele me apresenta algo assim:

 

nome_estudante | conselheiro

Vanilson 0

Emanuel 1

 

Aonde está 1 deve aparecer o nome Vanilson porque 1 é o codigo de matricula do Vanilson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria algo assim :

 

select e.nome_estudante, c.nome_estudante conselheiro
from estudantes e, estudantes c 
where e.codigo_consenheiro = e.codigo_estudantes

 

Supondo um relacionamento assim :

 

estudantes
----------
codigo_estudantes (pk)
nome_estudante
codigo_consenheiro (fk estudantes)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mota tentei criar a tabela do jeito que tu disseste, criar a tabela até ele cria agora na hora de inserir da o seguinte erro:

 

Cannot add or update a child row: a foreign key constraint fails (`webmestrado/matriculas_estudantes`, CONSTRAINT `fk_nome_conselheiro` FOREIGN KEY (`codigo_matricula`) REFERENCES `matriculas_estudantes` (`codigo_matricula`))

 

Por outra essa minha tabela matricula recebe a PK de estudantes e codigo do conselheiro será o codigo da matricula, eu não posso jogar o conselheiro na tabela estudantes, pq os alunos que estão na tabela estudantes ainda não estão matriculados e so é conselheiro quem já está matricula, tendo isso em conta não altera a query?

 

A minha tabela matricula que deve estar assim:

 

codigo_matricula codigo_estudante codigo_conselheiro
1                2                2
2                1                3

 

codigo_conselheiro é o codigo_matricula de um estudante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O conselheiro já deve existir na insersão do estudante.

 

A coluna do conselheiro deve ser do tipo que aceita NULL.

 

Seguindo o meu exemplo (na ordem) :

 

 

insert into estudantes (codigo_estudantes,nome_estudante,codigo_conselheiro) values (1,'Professor Xavier',null);
insert into estudantes (codigo_estudantes,nome_estudante,codigo_conselheiro) values (2,'Tempestade',1);
insert into estudantes (codigo_estudantes,nome_estudante,codigo_conselheiro) values (3,'Wolverine',1);

 

Este é um artigo que talvez te ajude.

 

Não sei se o artigo é aberto na Web pois o li na revista impressa, mas tente obté-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.