Quando se tem uma consulta e o SQL possui WHERE…OR os filtros param todos de funcionar inclusive o Quicksearch e o novo Filtro refinado.
Alguem já resolveu este problema?
Quando se tem uma consulta e o SQL possui WHERE…OR os filtros param todos de funcionar inclusive o Quicksearch e o novo Filtro refinado.
Alguem já resolveu este problema?
Posta como está seu select
SELECT
Id,
data,
hora,
assunto,
mensagem,
login_origem,
login_destino,
status,
aguardando
FROM
comunicacao_interna
WHERE
aguardando = 1 and login_origem = ‘[usr_login]’ and status <> 2
or
aguardando = 2 and login_destino = ‘[usr_login]’ and status <> 2
ORDER BY
status,data,hora
Está faltando abrir e fechar os parenteses. Veja abaixo:
SELECT
Id,
data,
hora,
assunto,
mensagem,
login_origem,
login_destino,
status,
aguardando
FROM
comunicacao_interna
WHERE
(aguardando = 1 and login_origem = ‘[usr_login]’ and status <> 2)
or
(aguardando = 2 and login_destino = ‘[usr_login]’ and status <> 2)
ORDER BY
status,data,hora
Já tinha feito este teste, Não funciona de jeito nenhum!
Parece q o scriptcase desabilita todos os filtros com o OR no SELECT, se remover o OR volta estantaneamente!
De qualquer forma, o correto é fazer como mostrei, ou seja, com os parenteses. Coloque no modo debug sua aplicação e veja o que está fazendo.
Para colocar em modo debug, vá em Aplicação->Configuração e coloque a opção Modo Debug como Sim.
(mysqlt): SELECT data, assunto, login_origem, login_destino, status, Id, mensagem from comunicacao_interna where (aguardando = 1 and login_origem = ‘admin’) or (aguardando = 2 and login_destino = ‘admin’) and (assunto like ‘%teste%’ or mensagem like ‘%teste%’) order by status asc, data asc, hora asc LIMIT 0,17
No meu entendimento o scriptcase esta montando o filtro errado, analise a busca que fiz da palavra “teste” ele inclui a busca só no segundo bloco!
Coloque o where da seguinte forma:
where ((aguardando = 1 and login_origem = 'admin') or (aguardando = 2 and login_destino = 'admin')) and (assunto like '%teste%' or mensagem like '%teste%')
Veja, desta forma, vc separa os dois blocos do or do bloco do and.
Thyagão Valeu! Bela dica, tudo funcionando!
Blz…coloque como Resolvido. Vá no seu primeiro tópico, clique em Modificar.
Abração!!
o filtro esta totalmente certo, tem que se preparar a query , sabendo que vai ter inserções de trechos de SQL na mesma, sendo assim tem que pensar bem, não vejo como BUG. e sim como erro de usuario mesmo