Ir para conteúdo

POWERED BY:

Arquivado

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

David Borges

ASP + Like Mysql

Recommended Posts

Estou fazendo uma busca utilizando o like no mysql.

 

Pesquisa: Pizza -> Resultado: Pizzaria, Pizzas, Pizzaiolo, Massas de Pizza

O que preciso é alterar esse select para funcionar considerando um campo de texto com mais de um termo para pesquisa:

 

Pesquisa: Massa de Pizza -> Resultado: Pizzaria, Massa de Macarrão, Felipe Massa

 

Atualmente meu select:

 

termo_pesquisado = request.querystring("txt_termo")

 

SELECT * FROM tb_base WHERE campo_tb_base like '%"&termo_pesquisado&"%'"

 

Alguém sabe como fazer isso? Fazer um select considerando o termo pesquisado por partes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala galera.. vlw pela ajuda.

 

Seguinte Public2004, sua solução seria viável se fossem poucos registros e houvesse um limite de termos à serem pesquisados... mas o usuário pode digitar a expressão do tamanho que bem entender, e nesse caso eu faria inúmeros loops em um banco que tem 15.000 registros.... tenso né!! rsrs

 

Vinicius, então cara, ele funciona, mas só quando o cara digita uma única palavra.

 

Quando ele digita 2 palavras, ele procura um LIKE com a expressão completa e não quebrada.

 

Ex: "Pizza de Chocolate"

 

Ele só me tras "Pizza de Chocolate", "Pizza de Chocolate com queijo", "Pizza de Chocolate com banana".

 

Eu preciso de algo que me traga TUDO que contenha PIZZA e CHOCOLATE, mas não necessariamente na mesma expressão.

 

Tem alguma outra forma sem ser o loop?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Seguinte Public2004, sua solução seria viável se fossem poucos registros e houvesse um limite de termos à serem pesquisados... mas o usuário pode digitar a expressão do tamanho que bem entender, e nesse caso eu faria inúmeros loops em um banco que tem 15.000 registros.... tenso né!! rsrs

E não daria na mesma? Não teria que varrer o banco com 15000 registros em busca de cada palavra?

Sugestões adicionais:

Limite os termos a serem pesquisados;

Exclua as preposições da busca;

Oriente o usuário na utilização da ferramenta.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá David,

 

Aproveitando seu SELECT, troque o asterisco * por apenas os nomes dos campos para deixar seu comando ainda mais otimizado.

 

 

 

 

Abracos,

 

Leandro de Azevedo.

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw galera.

 

Public seguindo sua linha de raciocínio, vou fazer o array, minha dúvida antes de iniciar, com o array ele vai entender que faz tudo parte do mesmo select?

 

Não vai dar SELECT duplicado??

 

Olha o select rsrsrs...

 

Tem um exemplo simples ae pra me mostrar? Não precisa seguir meu select... eu faço a adaptação por aqui... vlw!

 

sql_consulta = "SELECT "
sql_consulta = sql_consulta & "tb_empresa.id_tb_empresa, "
sql_consulta = sql_consulta & "tb_empresa.nmfantasia_tb_empresa, "
sql_consulta = sql_consulta & "tb_empresa.nmfantasia_tb_empresa, "
sql_consulta = sql_consulta & "tb_empresa.endereco_complemento_tb_empresa, "
sql_consulta = sql_consulta & "tb_cidades.ds_cidade_nome, "
sql_consulta = sql_consulta & "tb_uf.ds_uf_sigla, "
sql_consulta = sql_consulta & "tb_bairros.ds_bairro_nome, "
sql_consulta = sql_consulta & "tb_logradouros.ds_logradouro_nome, "
sql_consulta = sql_consulta & "tb_logradouros.no_logradouro_cep, "
sql_consulta = sql_consulta & "tb_contatos.telefone01_tb_contatos, "
sql_consulta = sql_consulta & "tb_contatos.telefone02_tb_contatos "

sql_consulta = sql_consulta & "from tb_empresa "

sql_consulta = sql_consulta & "left join tb_uf "
sql_consulta = sql_consulta & "on tb_uf.cd_uf = tb_empresa.endereco_cd_estado_tb_empresa "

sql_consulta = sql_consulta & "left join tb_cidades "
sql_consulta = sql_consulta & "on tb_cidades.cd_cidade = tb_empresa.endereco_cd_cidade_tb_empresa "

sql_consulta = sql_consulta & "left join tb_bairros "
sql_consulta = sql_consulta & "on tb_bairros.cd_bairro = tb_empresa.endereco_cd_bairro_tb_empresa "

sql_consulta = sql_consulta & "left join tb_logradouros "
sql_consulta = sql_consulta & "on tb_logradouros.cd_logradouro = tb_empresa.endereco_cd_logradouro_tb_empresa "

sql_consulta = sql_consulta & "left join tb_contatos "
sql_consulta = sql_consulta & "on tb_contatos.id_empresa_tb_contatos = tb_empresa.id_tb_empresa "

sql_consulta = sql_consulta & "left join tb_produtos "
sql_consulta = sql_consulta & "on tb_produtos.id_tb_empresa_tb_produtos = tb_empresa.id_tb_empresa "

sql_consulta = sql_consulta & "WHERE tb_empresa.nmfantasia_tb_empresa like '%"&termo_pesquisado&"%' or "
sql_consulta = sql_consulta & "tb_empresa.rsocial_tb_empresa like '%"&termo_pesquisado&"%' or "
sql_consulta = sql_consulta & "tb_empresa.chamada_tb_empresa like '%"&termo_pesquisado&"%' or "
sql_consulta = sql_consulta & "tb_empresa.desc_tb_empresa like '%"&termo_pesquisado&"%' or "
sql_consulta = sql_consulta & "tb_produtos.nm_produto_tb_produtos like '%"&termo_pesquisado&"%'"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa... Não conheço o projeto, mas não teria como ir filtrando a busca por etapas? Pelo que vi aí, primeiro o nome do estado, depois cidade, endereço ou nome da empresa, sei lá??? Dá uma olhada na ferramenta de busca avançada aqui do fórum, pode te clarear algumas idéias.

 

De qualquer forma veja um exemplo da minha sugestão, criando um array com as palavras buscadas e um laço de repetição para o select:

keyWords = Request.Form("termos_pesquisados")
arrayKeyWords = Split(keyWords,"+")
For i = 0 To uBound(arrayKeyWords)
keyWords = arrayKeyWords(i)
sql_consulta ... LIKE '%"& keyWords &"%' ...
Next

 

Att.

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.