Ir para conteúdo

POWERED BY:

Arquivado

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

Fkarol

query com and or juntos

Recommended Posts

Boa noite

estou fazendo uma enquete

para evitar que uma pessoa vote mais de uma vez verifico no banco se o ip da mesma para um grupo de resposta fiz a seguinte query

SELECT voto_ip FROM votos WHERE voto_ip='127.0.0.1' And resposta_codigo ='41' Or resposta_codigo ='38' Or resposta_codigo ='39' Or resposta_codigo ='40' LIMIT 1

 

entretanto depois de alguem votar retona sim ou seja se tiver um voto com quakquer ip diz que ja tem voto

 

mas

voto_ip='127.0.0.1' And nao deveria se juntar com pelo menos um resposta_codigo

acho que ele so ta considerando os argumentos resposta_codigo

 

algeum pdoe me ajuda cria a sql certa

 

desde ja agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

abrace o trecho depois de "AND"

 

(resposta_codigo ='41' Or resposta_codigo ='38' Or resposta_codigo ='39' Or resposta_codigo ='40')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você caiu numa questão de precedência de operadores lógicos.

 

Na álgebra booleana, um AND pode ser interpretado como uma multiplicação e um OR como uma adição.

Do mesmo jeito que na álgebra comum temos:

 

3 + 4 * 5 = 3 + (4 * 5) = 23 por pardrão, pois o operador * tem PRECEDÊNCIA sobre o operador +.

 

Para alterar isso, precisamos colocar os parênteses nos devidos lugares:

 

(3 + 4) * 5 = 35

 

Na álgebra de Boole, os AND's são resolvidos antes dos OR's. Para mudar essa ordem, são necessários os parênteses.

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.