Jump to content


Photo

Misturar Critérios And E Or


  • Faça o login para participar
4 replies to this topic

#1 JurisCode

JurisCode

    Mestre

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Paraná

Posted 03/01/2010, 21:53

SELECT * FROM texto WHERE classe =" & classe & " and texto LIKE '%" & busca & "%'ORDER BY id ASC"
classe é uma coluna de valor numérico, quero pesquisar só nas que tem um determinado valor
o busca vai retornar um valor com OR ou AND ou coisa do tipo, de modo que depois de tratada a querystring, vai substituir os espaços por OR ou por AND conforme os critério de busca.

o problema é que está ignorando a coluna classe e retornando valores de toda a base de dados.

como corrijo isso?

o script é em asp, mas minha dúvida é na instrução

#2 CswargameS

CswargameS

    Eu não acredito!

  • Ex-Admins
  • 1490 posts
  • Sexo:Masculino
  • Localidade:Franca/SP

Posted 05/01/2010, 09:39

Sua consulta esta pegando a tabela texto e depois a coluna texto ? :huh:

E se não me engano os & está errado.


uma consulta normal seria assim

SELECT * FROM tabela WHERE coluna-X = "valor" AND coluna-Y LIKE "%valor%" ORDER BY id ASC

Regras
Posted Image
Fórum WMO - Equipe de Design & Vídeo, Áudio e Mídias - Administrador

#3 JurisCode

JurisCode

    Mestre

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Paraná

Posted 21/01/2010, 12:18

SELECT * FROM texto WHERE classe =" & classe & " and texto LIKE '%" & busca & "%'ORDER BY id ASC"
classe é uma coluna de valor numérico, quero pesquisar só nas que tem um determinado valor
o busca vai retornar um valor com OR ou AND ou coisa do tipo, de modo que depois de tratada a querystring, vai substituir os espaços por OR ou por AND conforme os critério de busca.

o problema é que está ignorando a coluna classe e retornando valores de toda a base de dados.

como corrijo isso?

o script é em asp, mas minha dúvida é na instrução

acho que eu consegui

nas partes que terão OR eu coloquei entre parêntesis, assim processa antes o que está entre os parentesis depois passa para o que ta na raíz.

#4 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 21/01/2010, 14:37

Juris, poderia postar a resolução?
Assim podemos ajudar mais colegam que eventuamente tenham a mesma dúvida!!

Grato!

Percebendo seu caso acredito que você esteja pensando em algo assim:
sql = "select * from texto where classe="& idClasse &" "& tipoBusca &" texto like '%"& campoBusca &"%' order by id"
Onde idClasse é o valor numérico para pesquisa, tipoBusca é onde você vai manipular como será
feito o critério de filtragem incluindo "or" ou "and" (string) e por final campoBusca o
valor na qual será pesquisado dentro do texto.
Ob: ASC é o valor default quando não informado para a ordenação do comando order by ;-)

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#5 JurisCode

JurisCode

    Mestre

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Paraná

Posted 28/01/2010, 12:43

ta bom, vai lá:

eu coloquei todos os AND juntos e os OR entre parênteis para ser procesado antes.

SQL = "Select * from tabela where tipo=1 AND classe=2 AND (texto like '%" & texto1 & "%' or texto like '%" & texto2 & "%' OR texto LIKE '%" & texto3 & "') order by coluna_tal ASC"

DAÍ VAI processar todo o or, encontrar os valores que se encaixam nas condições e depois vai pegar os resultados e foltrar pelos ANDs

legal né?

Caraca! Eu q patinava horrores em tudo que eu fazia só agora fui perceber que estou começando a dar uma força para quem precisa de uma forcinha tbm.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq