Assim … no seu modelo original vc tem a seguinte estrututa:
Nome Tabela: tabela_cliente
- codigo (Chave Primaria)
- nome
- descrição
- codigo_filho (chave estrangeira - tabela_cliente (Codigo)
- codigo_filha (chave estrangeira - tabela_cliente (Codigo)
Esse modelo não é recomendado uma vez que um cliente pode realmente ter mais de um filho ou filha. Mas sim, da pra usar segundo regras de negocio ou pq vc quer assim e pronto, arque com as consequências depois.
O que geralmente fazemos é ter uma tabela que relacione um cliente com seus filhos ainda que estes estejam na mesma tabela ( tabela_cliente ).
Então ficaria assim:
Nome Tabela: tabela_cliente
- codigo (Chave Primaria)
- nome
- descrição
tabela_filho
codigo_pai (tabela_cliente - codigo) ( Chave primaria )
codigo_filho (tabela_cliente - codigo) ( Chave primaria )
Bem, na tabela_filho vc tem apenas dois campos que serão a chave primaria desta tabela (composta) e que tbem serão chave estrangeira na tabela_cliente. Imagine a seguinte situação:
tabela_cliente: 1 - Carlos - descrição qualquer
tabela_cliente: 2 - Sergio - descrição qualquer
tabela_cliente: 3 - Paulo - descrição qualquer
tabela_cliente: 4 - Henrique - descrição qualquer
tabela_cliente: 5 - Gustavo - descrição qualquer
tabela_filho: 1 - 2
tabela_filho: 1 - 3
tabela_filho: 1 - 4
Ou seja …Carlos é pai de Sergio, Paulo e Henrique …
Este não é o melhor modelo uma vez que vc pode acabar cadastrando um pai para um filho que ja tenha um pai cadastrado, ou cadastrar um filho sendo pai … tem que tratar ou rever o modelo.
Fazer os joins disso exibe saber sql é claro. Sugiro montar essa estrutura e testar seu sql.