Ir para conteúdo

POWERED BY:

Arquivado

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

webfuture

Buscar por duas ou mais palavras em dois campos

Recommended Posts

Galera to com uma tretinha simples de ser resolvida (acredito eu). Preciso que um select faça o seguinte, se o usuário buscar por exemplo: fórum, imasters que ele busque fórum e imasters em dois campos, por exemplo, no titulo e na descrição, ou seja que ele traga resultados que contenham as duas palavras, e não que contenham ou uma ou outra, tenho o script abaixo que faz a segunda opção, estou fazendo alguns testes aqui mas não estou encontrando ainda a forma correta de se fazer.

 

vejam o código:

 

varbusca = Remove_Quotes(Request("busca"))arr= split(varbusca,",")for x = 0 to ubound(arr)if x =0 thenvarsql = " (description) like '%" & (arr(x)) & "%' or (title) like '%" & (arr(x)) & "%' "elsevarsql = varsql & "and (description) like '%" & (arr(x)) & "%' or (title) like '%" & (arr(x)) & "%' "end ifnextSet rs = Server.CreateObject("AdoDB.Recordset")rs.open "select title, description from tb_registros where ("& varsql &") group by title order by date_entered desc, popularidade asc limit 0,20", cnwhile not rs.EOFregistros = registros + 1titulo = RS("title")descricao = RS("description")Response.Write titulo & "<BR>" & descricaors.movenextwendrs.closeset rs = nothing

Se alguém puder ajudar,

 

Valeu,

 

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se agora vai

if x =0 thenvarsql = " (description like '%" & (arr(x)) & "%') AND (title like '%" & (arr(x)) & "%') "elsevarsql = varsql & "OR (description like '%" & (arr(x)) & "%') AND (title like '%" & (arr(x)) & "%') "end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá jonathandj, fiz uns testes e percebi o seguinte, ele até traz resultados mas não na ordem desejada, ou seja, se eu digo para ele trazer registros que contenham fórum e imasters no título ele traz ás vezes, o que acontece, ele so vai trazer se tiver na ordem do select, ou seja se a descricao e o titulo tiver a primeira parte antes da virgula ou se a descricao e o titulo tiver a segunda parte da virgula, e nao se o titulo tiver as duas partes de texto e depois se a descricao tiver as duas partes de texto. Não sei se fui claro, andei lendo algumas coisas, estou fazendo um teste da seguinte forma.

Fazer ele ler registros que contenham as duas palavras no titulo e ou uma ou outra na descrição (exemplo), porém, não sei se fiz certo. Ele chega a executar mas não traz o que eu peço:

 

varbusca = Remove_Quotes(Request("search"))SQl = "select title, description from tb_registros where "arrayBusca = Split(varbusca, ",")For i = 0 To Int(UBound(arrayBusca) )SQL = SQL & " title like '%" & trim(arrayBusca(i)) & "%' and "nextarrayDescricao = Split(varbusca, ",")For i = 0 To Int(UBound(arrayDescricao) )SQL = SQL & " description like '%" & trim(arrayDescricao(i)) & "%' or "nextsql_executar = len(trim(sql))sql_executar = sql_executar - 2sql_executar = left(sql,sql_executar)SQL = sql_executar & " order by data desc limit 0,200  "

Ele executa mas não obedece.. escrevi tanta coisa que nem sei se fui claro...rs

 

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhem que estranho, o select abaixo não executa o que esta escrito, ou seja, estou falando para ele trazer registros que tenham fórum e imasters no título e fórum ou imasters na descrição, porém, ele traz resultados que não respeitam a primeira regra.

 

titulo1 = "fórum"titulo2 = "imasters"sql1 = "select title, description from tb_registros where title like '%"& titulo1 &"%' and title like '%"& titulo2 &"%' and description like '%"& titulo1 &"%' or description like '%"& titulo2 &"%' and category <> 'A' group by title order by date_entered desc, popularidade ASC limit 0,200"

Se alguém souber me dizer onde estou errando....

 

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, não sei onde estou errando ou o que esta errado, ao meu ver esta tudo ok, porém se eu faço o seguinte:

 

"select campo1, campon from tabela where title like '%"& titulo1 &"%' and title like '%"& titulo2 &"%' and description like '%" & titulo1 & "%' order by date_entered desc, popularidade ASC limit 0,200"

Funciona, agora se faço:

 

"select campo1, campon from tb_sites where title like '%"& titulo1 &"%' and title like '%"& titulo2 &"%' and description like '%" & titulo1 & "%' or description like '%" & titulo2 & "%'  order by date_entered desc, popularidade ASC limit 0,200"

Não funciona... Alguém pode me ajudar?

Xavier

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.