Ir para conteúdo

POWERED BY:

Arquivado

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

William Espindola

[Resolvido] Operador OR

Recommended Posts

Ola pessoal, tudo bem com vocês?

 

Seguinte, estou fazendo uma consulta em duas tabelas, onde preciso que seja respeitadas algumas condições com o operador "OR". O problema é que basta eu colocar a condição que o meu resultado sai errado dêem uma olhada:

 

select nome,tipo,status,statusChaves,id,equ_id,status,emp_id_equ
from equipamentos AS equ
LEFT JOIN ocorrencias as oco ON oco.equipamento_id = equ.equ_id
where atende IN (1)
and emp_id_equ IN (13)
AND equ_statusChaves = 0 
OR status_autho = 0 
OR status = 2

 

Se eu não coloco estas duas condições com o OR o resultado toma o efeito que preciso vindo os equipamentos e suas ocorrências só que somente com o status das chaves e preciso também dos equipamentos que tiverem estes dois status com a condições utilizando o OR

 

Será que tenho que fazer isto com uma subcomsulta ou fazer consultas separadas?

 

Abraços e valeu obrigado pela ajuda! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando usar AND e OR separe as cláusulas por paranteses para tornar mais clara o WHERE e ter certeza de seu resultado

 

Membros com mais 1 ano ou Moderadores

 

errado

 

where tipo = 'membro' and data >= '24/10/2010' or tipo = 'moderador'

 

correto

 

where ((tipo = 'membro' and data >= '24/10/2010') or (tipo = 'moderador'))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa sim Motta, agradeço ajuda e por favor não entenda que estou criticando seu código. :)

 

Mas temos uma diferença, que é o que esta me complicando.

 

Em seu exemplo o OR se aplica a uma variação da primeira condição, ou seja podem existir dois "tipos" diferentes. Em meu caso não há esta.

 

São três colunas diferentes que será aplicado o OR:

 

AND equ_statusChaves = 0 
OR status_autho = 0 
OR status = 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente

 

where (atende IN (1) and emp_id_equ IN (13) AND equ_statusChaves = 0) 
     OR (status_autho = 0) 
     OR (status = 2)

 

mas não sei se a regra é esta que eu montei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Valeu Motta, consegui! :joia:

 

...
where (
 engaged IN (1)
 AND emp_id_equ IN (13)
 AND (equ_statusChaves = 0)
) OR (
 engaged IN (1)
 AND emp_id_equ IN (13)
 AND status_autho = 0
) OR (
 engaged IN (1)
 AND emp_id_equ IN (13)
 AND status = 2
) 

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.