Mysql
 sql >> Base de données >  >> RDS >> Mysql

Aide MySQL :Comment trouver toutes les commandes d'un client jusqu'à un prix <= 20 et un statut='non payé'

Presque EXACT même question répondue ici . Le principe est que vous auriez besoin d'une autre colonne pour agir comme un total cumulé pour le client en question...

J'ai créé une table et des données simulées exactement comme vos résultats et j'ai obtenu VOS résultats exacts... Le problème était en quelque sorte que MySQL appliquait les critères DEUX FOIS par ligne et ne comprenait pas comment ni pourquoi... Je soupçonne FORTEMENT que c'est un bogue, mais je ne peux pas le décrire. Quoi qu'il en soit, j'ai un correctif qui force une "PreQuery" interne comme base, et renvoie TOUS les enregistrements à partir de cela avec les @SQLVars, puis applique une clause WHERE à partir de cela...

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