Ir para conteúdo

Arquivado

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

DackAle

Select

Recommended Posts

E ae galera =)

 

Nossa fazia meses que não abria um topico...rs

 

Mas to com duas dúvidas, não sei o que to fazendo de errado vamos la..

 

no primeiro caso

 

ASP

[*]SQL="SELECT * FROM artigos WHERE categoria='" & variasp_categoria & "' AND titulo LIKE '%" & variasp_busca & "%' OR descricao LIKE '%" & variasp_busca & "%' AND destaque = True ORDER BY id DESC"

 

O que ocorrer acho que é mais erro de logica...

a categoria tem que ser exata... então uso o categoria='" % categoria_aqui & "'", normal... agora eu preciso que ele procure no campo titulo ou descricao a palavra buscada... mas o AND entre o categoria e titulo, ferra, pq ? pq ele tem que ser a categoria E ter a palavra no titulo, mas não quero isso... quero que ele ache ou no titulo ou na descricao... mas se pusar OU a categoria pode não valer...rs

 

E a segunda é essa

 

ASP

[*]SQL="SELECT * FROM artigos WHERE categoria='News' AND liberacao <= #" & date & "# AND termino >= #" & date & "# AND destaque = True ORDER BY Rnd(Int(Now()*[iD])-Now()*[iD]);"

 

basicamente o campo liberacao e termino é do tipo data e tem data do tipo dia/mes/ano... o que ele tem que fazer é selecionar is artios que a liberacao ja esteja valendo (ou seja se for dia 4/5/2005 pra ser liberado e hj é dia 10/5/2005 ja esta liberado) e o termino ainda não esteja valendo (ou seja se for dia 15/5/2005 ainda não terminou o prazo) e tem que ser True o destaque mas o caso é que ele ta trazendo resultados errados, tipo o unico que ele tras é um de dezembro (1/12/2005), to perdido...rs =P

 

Alguem tem ideia do que esta acontecendo ?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

DaclAle,

 

Temos que tomar cuidado com a cláusula "OR"...

 

Toda vez que utilizamos a cláusula "OR", como você fez no exemplo, o busca é separada..., por exemplo:

 

ASP

[*]

 

[*]Select * from MyTable where cd_usuario=1 and cd_usuario=2 Or cd_usuario is Null

 

[*]

 

Neste caso o SQL irá entender que você quer os usuários com código 1 e 2 (ao mesmo tempo) ou com usuário nulo. Bom até aí é simples, mas vamos complicar.

 

ASP

[*]

 

[*]Select * from MyTable 

 

[*]where cd_usuario=1 and nm_usuario='teste' Or cd_usuario is Null

 

[*]

 

Nesta situação o SQL ira retornar os dados que possuem cd_usuario=1 e nm_usuario='teste', e a ainda, todos os usuários que são nulos. Vamos complicar mais um pouco.

 

ASP

[*]

 

[*]Select * from MyTable 

 

[*]where 

 

[*] cd_usuario=1 and 

 

[*] nm_usuario='teste' 

 

[*] Or

 

[*] cd_usuario = 15 and

 

[*] nm_usuario like '%arroz%' and

 

[*] cd_tipo_usuario=5

 

[*]

 

[*]

 

Agora, o sistema fará 3 pesquisa diferentes, pois, não isolamos a claúsula "OR".

 

POrtanto, para que a pesquisa fique correta, será necessário isolarmos a cláusula "OR" utilizando os sinais de parênteses; assim:

ASP

[*]

 

[*]Select * from MyTable 

 

[*]where 

 

[*] cd_usuario=1 and 

 

[*] nm_usuario='teste' Or

 

[*] (cd_usuario = 15 and

 

[*] nm_usuario like '%arroz%' and

 

[*] cd_tipo_usuario=5)

 

[*]

 

[*]

 

Agora sim, os valores serão retornados em duas condições, ou seja, quando cd_usuario for igual a 1, o nome do usuario='test' ou, cd_usuario=15 e nm_usuario contém Arroz e tipo usuario igual 5.

 

Qualquer dúvida, é só falar.

 

 

Falow !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow valeu galera, o 1 deu certo, ficou assim

 

ASP

[*]SQL="SELECT * FROM artigos WHERE categoria='" & variasp_categoria & "'AND (titulo LIKE '%" & variasp_busca & "%' OR descricao LIKE '%" & variasp_busca & "%') AND destaque = True ORDER BY id DESC"

 

Agora ele procura na categoria exatamente e procura NOS dois valores corretamente sem afetar a categoria, era isso mesmo e entendi a explica~]ao... sobre o segundo

 

kdu não rola usar between, pq que eu saiba BETWEEN sempre foi para filtar falovres de UM camp exemplo

 

quero pegar pessoas entre 15 e 25 anos

 

SQL="SELECT * FROM cadastro WHERE idade BETWEEN 15 AND 25"

 

mas no meu caso eu quero as datas MENORES do dia de hoje no campo liberacao e as datas MAIORES que o dia de hoje no campo termino... são 2 clusulas em 2 campos diferentes...

 

Aparentemente tava certo minha sintaxe mas ele não me retorna certo :mellow:

 

Mas bom ja foi 50% andado, muito obrigado pela ajuda mas se alguem conseguir me ajudar no 2 agora =)

 

Abraçãoo

Compartilhar este post


Link para o post
Compartilhar em outros sites

BOm ja diminui a dor de cabeça, fiz o que você disse

 

ASP

[*] strSQL "SELECT * FROM artigos "

 

[*] strSQL = strSQL & "WHERE categoria='News' "

 

[*] strSQL = strSQL & "AND liberacao <= #" & date & "# "

 

[*] strSQL = strSQL & "AND termino >= #" & date & "# "

 

[*] strSQL = strSQL & "AND destaque = True "

 

[*] strSQL = strSQL & "ORDER BY Rnd(Int(Now()*[iD])-Now()*[iD]);"

 

o problema ta no termino, quando eu coloco apostrofo, ele me retorna todos os registros (inclusive os que não eram pra mostrar, mas até ai ta certo, ja que não estou mais barrando-os)

 

Vamos por partes codigo esta ai em cima...

 

dei um response e ele ta assim

 

SELECT * FROM artigos WHERE categoria='News' AND liberacao <= #11/5/2005# AND termino >= #11/5/2005# AND destaque = True ORDER BY Rnd(Int(Now()*[ID])-Now()*[ID]);
e no banco de dados esta assim

 

Imagem Postada

 

repare que os registros estão com pontos atendem a clausula, são do tipo News, esta como destaque e as datas batem com as procuradas e ele só mostra o ULTIMO, não mostra nenhum dos outros 3...

 

Muito estranho... :huh:

 

Bom mas ta valendo ja pela paciencia...rs, mas espero que consiga solucinar isso, ta bizarro

 

Abração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Access isso?!

 

enfim, mesmo q nao, use data no formato aaaa/mm/dd

 

ja cansei de ter problemas com datas no access, e qdo uso assim se resolve.

 

faz um teste ae, se nao mudar nada você diz!

 

vlw!

<{POST_SNAPBACK}>

aeeeeeeeeeeeeeeeeeee deu certo, pqp, aty´que enfim, hahahaha poxa valeu pela paciencia kdu, agora ta exato, ufa =)

 

muito obrigado ae pela paciencia e ajuda e não sabia dessa da viadagem do access...rs

 

Abraços e valeu =)

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.