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

Claudio Martinez

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.
Responder

Gostei + 0

29/07/2010

Claudio Martinez

ok amigo, entendi onde estava o problema, usei os parenteses e resolveu.


brigadao

abraços
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar