Ir para conteúdo

POWERED BY:

Arquivado

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

diegoaferraz

Busca em mais que 2 tipos

Recommended Posts

Boa noite, tenho a seguinte situação:

 

Tabela "Especialidades":

especialidades_id
especialidades_nome

 

Tabela "Doutores":

doutores_id
doutores_nome
doutores_status ..... etc

 

Cada doutor pode ter várias especialidades, para isso eu criei a tabela "doutor_especialidade":

doutor_especialidade_id

doutor_especialidade_doutor
doutor_especialidade_especialidade

 

Fiz um filtro com checkboxes com as especialidades, gostaria que na hora que o usuário clicar filtrar o doutor com todas as especialidades escolhidas.

 

SELECT *
FROM doutor_especialidade
INNER JOIN doutores ON doutor_especialidade = doutores_id

WHERE doutores_status=1
AND (
doutor_especialidade_especialidade = 1 OR
doutor_especialidade_especialidade = 2 OR
doutor_especialidade_especialidade = 3
)
GROUP BY doutores_id
ORDER BY doutores_nome
Dessa forma consigo filtrar todos os doutores com as especialidades 1, 2 ou 3. Eu quero encontrar o doutor que tenha as 3 especialidades. Coloquei o AND no lugar do OR em vermelho mas não consegui, quando eu escolho 2 ou mais especialidades não encontra nenhum doutor, sendo que existe doutores com as especialidades 1,2 e 3 juntas.
Desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um

 

Having count(distinct especialidades) >= 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria isto, creio


SELECT doutores_id,doutores_nome
FROM doutor_especialidade
INNER JOIN doutores ON doutor_especialidade = doutores_id
WHERE doutores_status=1
AND doutor_especialidade_especialidade IN (1,2,3)
GROUP BY doutores_id,doutores_nome
having count(distinct doutor_especialidade_especialidade) >=3 
ORDER BY doutores_nome

A sql talvez tenha de ser montada dinamicamente.para ficar generica

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria isto, creio


SELECT doutores_id,doutores_nome
FROM doutor_especialidade
INNER JOIN doutores ON doutor_especialidade = doutores_id
WHERE doutores_status=1
AND doutor_especialidade_especialidade IN (1,2,3)
GROUP BY doutores_id,doutores_nome
having count(distinct doutor_especialidade_especialidade) >=3 
ORDER BY doutores_nome

A sql talvez tenha de ser montada dinamicamente.para ficar generica

Valeu Motta, perfeito!

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.