Prada 1 Denunciar post Postado Janeiro 26, 2015 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
Motta 645 Denunciar post Postado Janeiro 26, 2015 http://dev.mysql.com/doc/refman/5.0/en/join.html Precisa fazer um JOIN. Compartilhar este post Link para o post Compartilhar em outros sites
Prada 1 Denunciar post Postado Janeiro 26, 2015 É 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
lokaodomau 61 Denunciar post Postado Janeiro 26, 2015 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
Prada 1 Denunciar post Postado Janeiro 27, 2015 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
lokaodomau 61 Denunciar post Postado Janeiro 27, 2015 Muito bom! Compartilhar este post Link para o post Compartilhar em outros sites