Fórum Ajuda com busca no MySQL #523524
20/06/2015
0
[img]http://arquivo.devmedia.com.br/forum/imagem/437851-20150620-024330.png[/img]
Minha intenção é elaborar uma query na tabela consulta que retorne as seguintes colunas:
IdConsulta | Nome do Paciente | Nome do Médico
Porém não consigo elaborar uma query que retorne o nome do paciente e do médico, tentei o seguinte abaixo mas não tive êxito:
select consulta.idconsulta as 'idConsulta', pessoa.nmpessoa as 'Nome do paciente', pessoa.nmpessoa as 'Nome do médico'
from consulta
inner join paciente on pessoa.idpessoa = paciente.idpessoa
inner join medico on pessoa.idpessoa = medico.idpessoa
Alguém poderia me dizer onde estou fazendo errado?
Lucas Henrique
Curtir tópico
+ 0Post mais votado
20/06/2015
[img]http://arquivo.devmedia.com.br/forum/imagem/269142-20150620-093112.png[/img]
Quanto a sua dúvida, pessoalmente não gosto desse estilo de normalização, o excesso de normalização acaba aumentando os "JOINS" e por consequência a complexidade da query na consulta, mas sei que nas aulas de modelagem de dados nas faculdades essa normalização é matéria obrigatória.
Sua consulta vai funcionar dessa maneira:
select co.idconsulta as 'idConsulta', pe.nmpessoa as 'Nome do paciente', pes.nmpessoa as 'Nome do médico'
from consulta co inner join paciente pa on co.idpaciente = pa.idpaciente
inner join pessoa pe on pa.idpessoa = pe.idpessoa
inner join medico me on co.idmedico = me.idmedico
inner join pessoa pes on me.idpessoa = pes.idpessoa
Note que coloquei um alias para o nome das tabelas, afinal digitar o nome inteiro toda vez é meio ruim.
William
Gostei + 1
Mais Posts
20/06/2015
Lucas Henrique
Seu código funcionou muito bem, muito obrigado, e você tem razão, na faculdade eles ensinam que deve-se normalizar todas as tabelas.
O que você acha que, nesse meu caso específico, eu deveria fazer? Colocar os campos comuns 'nmpessoa' e 'cpf' nas tabelas de médico e paciente e remover a tabela pessoa?
Gostei + 0
20/06/2015
William
Quanto a normalização, mesmo medico e paciente possuindo atributos parecidos eu criaria uma tabela (entidade) para cada um, assim o JOIN não precisa passar por 2 tabelas até chegar aos dados.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)