Mysql
 sql >> Database >  >> RDS >> Mysql

Aiuto MySQL:come trovare tutti gli ordini da un cliente fino al prezzo <=20 e status='non pagato'

Quasi ESATTO stessa domanda ha risposto qui . La premessa è che avresti bisogno di un'altra colonna che funga da totale parziale per il cliente in questione...

Ho creato una tabella e simulato i dati esattamente come i tuoi risultati e ho ottenuto i TUOI risultati esatti... Il problema era che in qualche modo MySQL applicava i criteri DUE VOLTE per riga e non capivo come o perché... Sospetto FORTEMENTE che sia un bug, ma non posso descriverlo Ad ogni modo, ho una correzione che forza un "PreQuery" interno come base e restituisce TUTTI i record da quello con @SQLVars e quindi applica una clausola WHERE da quello ...

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