[RESOLVIDO] Problema ao fazer consultas com varios OR

2 respostas
carlinhoscomp

Bom dia galera do GUJ!

estou com um problema para fazer consultas no MYSQL.
tenho várias tabelas, exemplo:

empresa(id_empresa, nome)
situacaoCliente(id_situacao,nome) //ativo, inativo, spc/serasa, etc
cliente(id_cliente, id_empresa, id_situacao, nome, dataCadastro)

estou querendo gerar um relatório com filtragem, o usuario pode selecionar N empresas e N situacao.
minha consulta está assim:

SELECT cliente.dataCadastro, cliente.nome, situacao.nome, empresa.nome FROM cliente
INNER JOIN empresa on empresa.id_empresa = cliente.id_empresa
INNER JOIN situacao on situacaoid_situacao = cliente.id_situacao
WHERE cliente.dataCadastro >= ‘2011-04-01’ AND cliente.dataCadastro <= '2011-04-30’
AND cliente.id_empresa = ‘1’ OR cliente.id_empresa = ‘2’ OR cliente.id_empresa = '3’
AND cliente.id_situacao = ‘1’ OR cliente.id_situacao = ‘2’;

o que está acontecendo é que ele não respeita a condição "cliente.id_situacao = ‘1’ OR cliente.id_situacao = ‘2’ "
as vezes neim respeita a comparação da dataCadastro. Mostra tudo.

O que pode haver de errado?

2 Respostas

caio.gaspar

tenta colocar as condições OR entre parenteses.

Assim:

SELECT cliente.dataCadastro, cliente.nome, situacao.nome, empresa.nome FROM cliente
INNER JOIN empresa on empresa.id_empresa = cliente.id_empresa
INNER JOIN situacao on situacaoid_situacao = cliente.id_situacao
WHERE cliente.dataCadastro >= '2011-04-01' AND cliente.dataCadastro <= '2011-04-30'
AND (cliente.id_empresa = '1' OR cliente.id_empresa = '2' OR cliente.id_empresa = '3')
AND (cliente.id_situacao = '1' OR cliente.id_situacao = '2');
carlinhoscomp

Aew, fiz uns teste aqui e deu certo

valeu caio

Criado 3 de maio de 2011
Ultima resposta 3 de mai. de 2011
Respostas 2
Participantes 2