GARANTIR DESCONTO

Fórum Ajuda com busca no MySQL #523524

20/06/2015

0

Pessoal, ainda sou leigo no assunto, mas estou em dúvida para conseguir elaborar uma query nas tabelas abaixo:

[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

Lucas Henrique

Responder

Post mais votado

20/06/2015

Lucas por gentileza quando for postar trechos de código utilize a tag code:
[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

William
Responder

Gostei + 1

Mais Posts

20/06/2015

Lucas Henrique

Willian, muito obrigado pela ajuda, tentei editar minha postagem para inserir a tag code mas aparentemente não é possível.

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?
Responder

Gostei + 0

20/06/2015

William

Você só consegue editar se ninguém tiver respondido ainda, depois já não é mais possível, tranquilo fica a dica para a próxima.

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.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar