Fkarol 0 Denunciar post Postado Outubro 18, 2010 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
hinom 5 Denunciar post Postado Outubro 18, 2010 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
Henrique Barcelos 290 Denunciar post Postado Outubro 18, 2010 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