Vanilson 2 Denunciar post Postado Junho 20, 2011 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
Motta 645 Denunciar post Postado Junho 20, 2011 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
Vanilson 2 Denunciar post Postado Junho 23, 2011 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
Motta 645 Denunciar post Postado Junho 23, 2011 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
Vanilson 2 Denunciar post Postado Junho 23, 2011 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
Motta 645 Denunciar post Postado Junho 23, 2011 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