Fórum myql nao funciona nao da o retorno esperado #382071
23/07/2010
0
ola pessoal, tenho uma tabela que só tem esses 4 registros
campo: tipo_pagamento - registros: mastercard , diners , cheque , cheque
no campo cod_status: - registros 1 , 1 , 1, 2
no campo cpf os dois sao diferentes.
se eu faco a consulta assim:
<% pagtorecebido = "select count(distinct cliente_cpf) as pagto_recebido from retorno_pagto where tipo_pagamento = 'VISA' or tipo_pagamento = 'Mastercard' or tipo_pagamento = 'American Express' or tipo_pagamento = 'AURA' or tipo_pagamento = 'Diners' or tipo_pagamento = 'Hipercard' and cod_status = [u]'1'[/u]" %>
me retorna o valor 2
e se eu faço a conslta mudando o cod_status para [b]'0'[/b] ou [b]'2'[/b] ou [b]'3'[/b] continua dando o resultado 2
sendo que somente tem esses dois registros.
se eu faco a consulta mais simples:
<%recebido = "select count(distinct cliente_cpf) as cetap from retorno_pagto where tipo_pagamento = 'cheque' and cod_status = '1'"%>
me retorna os valores corretos da contagem, mesmo eu mudando o cod_status
se alguem puder me ajudar eu agradeço...
Claudio Martinez
Curtir tópico
+ 0
Responder
Posts
26/07/2010
Gilson Sousa
Olá...uma causa de sua primeira consulta nao gerar o resultado esperado pode ser o uso dos operadores OR e AND. Quando usados várias vezes, é aconselhável o uso de parênteses para que a condição seja realizada corretamente, pois a condição OR é a primeira a ser comparada nesta consulta, depois o AND. Exemplo:
<% pagtorecebido = "select count(distinct cliente_cpf) as pagto_recebido from retorno_pagto where ( tipo_pagamento = 'VISA' or tipo_pagamento = 'Mastercard' or tipo_pagamento = 'American Express' or tipo_pagamento = 'AURA' or tipo_pagamento = 'Diners' or tipo_pagamento = 'Hipercard' ) and cod_status = [u]'1'[/u]" %>
Outra opção é o IN, que substitui a combinação de vários OR. Exemplo: <% pagtorecebido = "select count(distinct cliente_cpf) as pagto_recebido from retorno_pagto where tipo_pagamento in ( 'VISA' , 'Mastercard' , 'American Express' , 'AURA' , 'Diners' , 'Hipercard' ) and cod_status = [u]'1'[/u]" %>
Tenta usar desta forma, pode ser isso. Abraço.
Outra opção é o IN, que substitui a combinação de vários OR. Exemplo: <% pagtorecebido = "select count(distinct cliente_cpf) as pagto_recebido from retorno_pagto where tipo_pagamento in ( 'VISA' , 'Mastercard' , 'American Express' , 'AURA' , 'Diners' , 'Hipercard' ) and cod_status = [u]'1'[/u]" %>
Tenta usar desta forma, pode ser isso. Abraço.
Responder
Gostei + 0
29/07/2010
Claudio Martinez
ok amigo, entendi onde estava o problema, usei os parenteses e resolveu.
brigadao
abraços
brigadao
abraços
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)