Ir para conteúdo

Arquivado

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

alex.lana

Relacionamento entre itens de uma mesma tabela

Recommended Posts

Oi, gente!Estou começando a modelar um banco de dados e vou fazer uma tabela "pessoas" que vai alimentar uma aplicação de árvore genealógica.Nessa tabela vamos ter informação sobre os pais e os filhos de cada pessoa, só que os pais e os filhos vão estar cadastrados nessa mesma tabela em linhas diferentes.Os campos são:- código pessoa- nome da pessoa- data de nascimento- código pai- código mãeVocês têm algum exemplo de como relacionar as linhas de uma tabela entre elas mesmas ao fazer o record set sem precisar fazer loops e mais loops? Sabem onde posso encontrar esse tipo de informação (já andei procurando e não encontrei)?alxPS.: Estou pensando em montar o banco em MySQL, mas se alguém souber onde posso encontrar a solução para isso em qualquer tipo de banco de dados, não tem problema, eu me viro pra transpor pra MySQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!!Aparentemente está correta a sua tabela... qual seria de fato o problema ? Se quiser por exemplo selecionar todos os filhos de um pai é SELECT * FROM PESSOAS WHERE CODIGO_PAI = 20você pode colocar também o código da mãe se for o caso uma vez que um pai pode ter filhos com várias mulheres.Gostei desse seu sistema, nunca tinha pensado em "relacionamente dentro de uma mesma tabela". Muito interessante =)Até

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que estou querendo evitar loops.Queria que quando eu pedisse a lista da árvore genealógica eu já tivesse a resposta da lista completa sem precisar pegar a informação de quem é o pai, passar novamente isso pro banco de dados, pegar o número do pai do pai e da mãe do pai, passar isso de novo pro banco, pegar o pai do pai do pai, a mãe do pai do pai, o pai da mãe do pai e a mãe da mãe do pai... um de cada vez. O ideal seria o banco já puxar a lista inteira relacionando uma linha com a outra de uma vez só.Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

e voce que listar os campos de mais de uma tabela porque não faz uma procura mais detalhada?SELECT * FROM PESSOAS WHERE CODIGO_PAI = 20 and codigo_mãe=20 andcodigo do filho=20

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não posso ter mais de uma tabela, se for ter uma tabela para cada geração, não tenho como definir quantas tabelas vou colocar no banco, não ia dar certo isso.Um exemplo de busca seria pedir a árvore genealógica da família Silva, por exemplo. O record set precisaria ser feito organizando a hierarquia de filhos, pais, avós, bisavós. Uma forma de obter essa hierarquia dentro da tabela é com loops que vão ser uma loucura. Mas o que eu estava procurando é algum comando, ou outra coisa, que funcionasse como o INNER JOIN. Ainda não fiz o teste e não tenho o banco de dados em casa pra fazer, mas vou até tentar aplicar o INNER JOIN pra tentar relacionar a tabela com ela mesma, mas acho difícil funcionar...Se alguém souber de alguma coisa q faça isso sem precisar usar loops e mais loops, ou de algum lugar q tenha alguma referência pra isso...Valeu pelo interesse, gente. É um problema estranho mesmo.

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.