Ajuda com busca no MySQL
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?
[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
Curtidas 0
Melhor post
William
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:
Note que coloquei um alias para o nome das tabelas, afinal digitar o nome inteiro toda vez é meio ruim.
[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.
GOSTEI 1
Mais Respostas
Lucas Henrique
20/06/2015
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?
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
William
20/06/2015
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.
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