[SQL] MySQL select statement hoe ?

Pagina: 1
Acties:

  • rvrbtcpt
  • Registratie: November 2000
  • Laatst online: 21-09 18:32
Hoi,

Even een vraagje over hoe een bepaald select statement te maken:

Stel ik heb een tabel met korting die afhankelijk is van een totaal bedrag, ofwel:

totaal korting

> 50 50%
> 100 100%

Mijn huidige select statement haalt of geen of de eerste regel op indien het totaal tussen 50 en 100 ligt of beide regels indien dit boven de 100 ligt. Met een ORDER BY en dan allen het laatste record bewaren lukt het natuurlijk wel om de juiste waarde boven water te krijgen maar dit moet toch ook binnen het select statement meteen kunnen of niet ?
Nu uiteraard een >= in mijn select statement.

Alvast bedankt voor je reactie.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

100% korting is een beetje gevaarlijk.. doe er maar een miljoen :)

het kan inderdaad wel door de kortingen in een tabel te zetten en bij welke aantal het geldt. Hiermee gebruik je een MAX(korting) op de waarde die onder het aantal ligt wat men besteld. geef die een alias bij het select gedeelte en je kan er gewoon mee rekenen.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • rvrbtcpt
  • Registratie: November 2000
  • Laatst online: 21-09 18:32
Die korting is voor de verzendkosten :) (niet voor het totaal order bedrag)
Nu ziet het statement er zo uit:
$query = "SELECT shippingdiscount.id, shippingdiscount.name, shippingdiscount.description, shippingdiscount.baskettotal, shippingdiscount.discount, shippingdiscount.type ";
$query .= "FROM shippingdiscount,shippingdiscountmatch WHERE shippingdiscount.id = shippingdiscountmatch.discountid AND shippingdiscountmatch.shippingid = ".$shipping_id." ";
$query .= "AND ".$sub_total." >= shippingdiscount.baskettotal ORDER BY shippingdiscount.baskettotal";
Die MAX werkt toch alleen maar als je 1 kolom selecteerd. Dan zou ik dus 2 keer een SELECT moeten uitvoeren. Een keer voor het bepalen van het ID en daarna voor het record op te halen ?

Verwijderd

Je loopt hierbij heel erg tegen het gebrek aan sub-select ondersteuning van MySQL aan, waar weinig aan te doen is.

Je maakt het jezelf in ieder geval makkelijker door discount ranges te maken, dus in de discount tabel een kolom met een minimum en maximum bedrag te maken waarvoor die korting geldt.

Succes :)

  • rvrbtcpt
  • Registratie: November 2000
  • Laatst online: 21-09 18:32
Dan zal ik het zo maar in elkaar zetten. Het is toch mooier als het SQL statement meteen het juiste ID teruggeeft i.p.v. geklooi in de code om dat er dan nog uit te filteren.

Heb nu min en max. Bij max moet je dan wel een vet groot getal invullen. Is eigenlijk niet zo mooi maar het werkt nu wel lekker. Het resultaat is altijd het ID van de kortingsregel die toegepast moet worden