Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Ajuda do MySQL:Como encontrar todos os pedidos de um cliente até o preço <=20 e status='não pago'


Quase EXATA mesma pergunta respondida aqui . A premissa é que você precisaria de outra coluna para atuar como um total corrente para o cliente em questão...

Eu criei uma tabela e simulei dados exatamente como seus resultados e cheguei aos SEUS resultados exatos... O problema era que, de alguma forma, o MySQL estava aplicando os critérios DUAS VEZES por linha e não entendia como ou por quê... Eu suspeito FORTEMENTE que seja um bug, mas não posso descrevê-lo. De qualquer forma, eu tenho uma correção que força uma "PreQuery" interna como base e retorna TODOS os registros com o @SQLVars e, em seguida, aplico uma cláusula WHERE disso ...
select properSummed.*
   from 
      ( select
              o.orderid, 
              o.price, 
              @RunningTotal := @RunningTotal + o.price as UnpaidSoFar
           from
              orders o, 
              (select @RunningTotal := 0 ) sqlvars
           where o.ownerid = 1
             and o.paymentstatus = 'unpaid' ) properSummed
    where 
       properSummed.UnpaidSoFar <= 50