sql >> Database >  >> RDS >> Mysql

MySQL-hulp:hoe vind je alle bestellingen van een klant tot prijs <=20 en status='unpaid'

Bijna EXACT dezelfde vraag hier beantwoord . Het uitgangspunt is dat u een andere kolom nodig heeft om als lopend totaal voor de klant in kwestie te fungeren...

Ik heb een tabel gemaakt en gegevens gesimuleerd precies zoals uw resultaten en kwam met UW exacte resultaten ... Het probleem was op de een of andere manier dat MySQL de criteria TWEEMAAL per rij toepast en niet begreep hoe of waarom ... Ik vermoed STERK dat het een bug is, maar kan het niet omschrijven. Hoe dan ook, ik heb WEL een oplossing die een innerlijke "PreQuery" als basis afdwingt, en ALLE records daarvan retourneert met de @SQLVars en dan een WHERE-clausule van daaruit toepassen...

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. Gefilterde indexen en INBEGREPEN kolommen

  2. PayPal ODBC-stuurprogramma

  3. MySQL slaat ongerichte grafiekranden efficiënt op

  4. 12c Adaptieve plannen in SQL Developer