Ir para conteúdo

Arquivado

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

Prada

consulta

Recommended Posts

Olá pessoal, sou novato tanto aqui no fórum quanto em MySQL, minha dúvida é a seguinte: "tenho duas tabelas distintas, sendo elas "paciente" e outra "habito", as duas são N para N, ou seja contém mais uma tabela denominada paciente_habito, onde contém os id dos hábitos e pacientes, mas quando tento consultar um resultado específico ele sempre lista tudo."

 

Estou tentando fazer o seguinte comando:

 

select paciente_habito.id_paciente, paciente_habito.id_habito, habito.descricao

from paciente_habito, habito

where paciente_habito.id_paciente = 7

 

e ele me retorna o seguinte:

 

id_paciente || id_habito || descricao

7 1 Fumante

7 1 Morde caneta

7 1 Teste

 

 

Sendo que o único resultado que quero é o habito do paciente com o id 7. Obrigado desde já e desculpem-me se ficou meio confuso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que meu professor ensinou a fazer tais consultas apenas com a cláusula where e não nós ensinou a utilizar o método join, poderia me informar se é possível fazer com where? Se sim, poderia me explicar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve especificar qual campo da tabela `paciente_habito` é igual a qual campo da tabela `habito`, além do filtro que utilizou, pois você deseja verificar quais os hábitos do paciente 7.

SELECT
  paciente_habito.id_paciente,
  paciente_habito.id_habito,
  habito.descricao 
FROM
  paciente_habito,
  habito
WHERE
  paciente_habito.id_paciente = 7
  AND paciente_habito.campo_exemplo = habito.campo_exemplo

Obs: Este tipo de relacionamento funciona igual o INNER JOIN, com a diferença que desta forma o relacionamento está dentro da cláusula WHERE, e no INNER JOIN estará na cláusula JOIN (FROM paciente_habito INNER JOIN habito ON paciente_habito.campo_exemplo = habito.campo_exemplo), deixando o WHERE somente para os demais filtros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve especificar qual campo da tabela `paciente_habito` é igual a qual campo da tabela `habito`, além do filtro que utilizou, pois você deseja verificar quais os hábitos do paciente 7.

SELECT
  paciente_habito.id_paciente,
  paciente_habito.id_habito,
  habito.descricao 
FROM
  paciente_habito,
  habito
WHERE
  paciente_habito.id_paciente = 7
  AND paciente_habito.campo_exemplo = habito.campo_exemplo

Obs: Este tipo de relacionamento funciona igual o INNER JOIN, com a diferença que desta forma o relacionamento está dentro da cláusula WHERE, e no INNER JOIN estará na cláusula JOIN (FROM paciente_habito INNER JOIN habito ON paciente_habito.campo_exemplo = habito.campo_exemplo), deixando o WHERE somente para os demais filtros.

 

 

Muito obrigado era exatamente o que eu precisava, só para esclarecer, utilizei o seguinte código para pegar dados específicos:

 

SELECT
paciente_habito.id_paciente,
paciente_habito.id_habito,
habito.descricao
FROM
paciente_habito,
habito
WHERE
paciente_habito.id_paciente = 7
AND paciente_habito.id_habito = habito.id_habito

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.