Ir para conteúdo

POWERED BY:

Arquivado

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

leo_SJCampos

Relacionamento entre 3 tabelas N:N

Recommended Posts

Galera, tenho 3 tabelas, onde uma é relacionada com outra através de uma terceira

 

Medicos, especialidade, plano

credenc é a que tem o id de todas elas

 

Um medico por ter uma ou mais especialidades e vice versa

Um medico por ter um ou mais planos e vice versa

 

isso funciona uma maravilha, quando eu preciso pegar dados das 3 tabelas, mas quando eu preciso somente trazer os medicos e especialidades com todos os planos sem definir qual é ele repete o nome de todos os medicos..

o que eu devo fazer...?

 

aqui esta meu select quando eu preciso trazer tudo, definindo um plano

 

select a.nome, a.id_medico, b.descricao as especialidade
 , c.id_credenc, d.descricao as plano 
 , e.endereco, e.bairro, e.fone, f.descricao as cidade
 from wmedico a, wesp b, wcredenc c, wplano d, wender e, wcidade f
 where a.id_medico = c.medico_id
 and   b.id_espec = c.esp_id
 and   d.id_plano = c.plano_id
 and   e.id_ender = c.ender_id
 and   f.id_cidade = c.cidade_id
 and   f.id_cidade = '$cidade'
 and   d.id_plano = '$plano'
 and   b.id_espec = '$especialidade'

 

reparem que eu coloquei d.id_plano = plano

ele retorna certinho, somente daquele plano, sem duplicar os nomes.. mas quando eu tiro aquela comparacao, e quero trazer todos os planos ele repete todos os nomes,, ja tentei group by, distinct mas nada funciona..

 

alguem pode me ajudar?

valeu galera

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se um Médico pode atender 1 ou mais planos vai duplicar mesmo nos casos em que houver mais um Plano, não tem solução quando não houver filtro de Plano.

 

Mas você pode retirar o Plano do Select d.descricao as plano , mas ainda podrá ocorrer duplicidades para Médicos com mais de uma especialidade/endereço.

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.