Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com consulta


Diego.G.A

Pergunta

Seguinte galera eu tenho 3 tabelas

pdf_fornecedores

pdf_setores_atuacao_fornecedor

pdf_descriminacao_fornecedor

A tabela "pdf_fornecedores" contém os dados principais como nome etc..

A tabela "pdf_setores_atuacao_fornecedor" contém os setores de atuação dos fornecedores. Referencia a pdf_fornecedores.

A tabela "pdf_descriminacao_fornecedor" contém as descriminações dos fornecedores. Referencia a pdf_fornecedores.

Eu montei um sistema de busca avançada que o usuário pede escolher vários setores e varias descriminações, efetuei a busca com o seguinte sql.

SELECT  * FROM pdf_fornecedores AS T1 LEFT JOIN pdf_setores_atuacao_fornecedor  AS T2 ON T1.IdFornecedor=T2.IdFornecedor LEFT JOIN  pdf_discriminacao_fornecedor AS T3 ON T1.IdFornecedor=T3.IdFornecedor  WHERE T2.IdSetorAtuacao='1' AND T2.IdSetorAtuacao='2' AND  T3.IdDiscriminacaoSetorAtuacao='1' AND  T3.IdDiscriminacaoSetorAtuacao='5' AND  T3.IdDiscriminacaoSetorAtuacao='4' AND T1.IdRegiaoAtuacao='1' AND  T1.RazaoSocial LIKE '%i%' AND T1.NomeFantasia LIKE '%i%' AND T1.CNPJ  LIKE '%2%' AND T1.Status='1'

só que não foi retornado nada na consulta, mas existem fornecedores que possuem esses dados. E por este motivo a consulta deveria retorna os fornecedores.

Eu gostaria de saber se alguém pode me ajudar com essa consulta.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Oi, 'Diego.G.A'

Seu erro está no uso do AND na cláusula WHERE. Seu pensamento foi correto mas o uso de AND implica que o mesmo campo contenha 2 valores diferentes ao mesmo tempo e isto é impossível. Por exemplo, observe seu código: T2.IdSetorAtuacao='1' AND T2.IdSetorAtuacao='2' OU o valor de IdSetorAtuacao em T2 será 1 ou será 2 NUNCA será 1 E 2 no mesmo campo e no mesmo registro. Neste caso deve-se substituir o AND por OR.

SELECT  * FROM pdf_fornecedores AS T1 
LEFT JOIN pdf_setores_atuacao_fornecedor  AS T2 ON T1.IdFornecedor=T2.IdFornecedor 
LEFT JOIN  pdf_discriminacao_fornecedor AS T3 ON T1.IdFornecedor=T3.IdFornecedor  
WHERE (T2.IdSetorAtuacao='1' OR T2.IdSetorAtuacao='2') AND  T3.IdDiscriminacaoSetorAtuacao='1' AND
    (T3.IdDiscriminacaoSetorAtuacao='5' OR  T3.IdDiscriminacaoSetorAtuacao='4')  AND T1.IdRegiaoAtuacao='1' AND
    T1.RazaoSocial LIKE '%i%' AND T1.NomeFantasia LIKE '%i%' AND T1.CNPJ  LIKE '%2%' AND T1.Status='1'

Veja se funciona agora.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...