sql >> Databasteknik >  >> RDS >> Mysql

MySQL-hjälp:Hur man hittar alla beställningar från en kund till pris <=20 och status='obetald'

Nästan EXAKT samma fråga besvaras här . Utgångspunkten är att du skulle behöva en annan kolumn för att fungera som en löpande summa för kunden i fråga...

Jag skapade tabeller och simulerade data exakt som dina resultat och kom fram till DINA exakta resultat... Problemet var på något sätt MySQL tillämpade kriterierna TVÅ GÅNGER per rad och förstod inte hur eller varför... Jag misstänker STARKT att det var en bugg, men kan inte beskriva det. Hur som helst, jag har en fix som tvingar fram en inre "PreQuery" som bas, och returnerar ALLA poster från den med @SQLVars och sedan tillämpar en WHERE-sats från det...

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


  1. Använder PHP för att ladda upp filen och lägga till sökvägen till MySQL-databasen

  2. Finns det en PostgreSQL-motsvarighet till SQL Server Profiler?

  3. Flera databas och transaktioner

  4. Visa SQL-frågaresultat i php