Aantal batches uitrekenen
Ik ben voor mijn werkt een script aan het maken om automatisch batches uit te rekenen. Het volgende is de bedoeling:
Een klant besteld bijvoorbeeld 8500 producten.
Die worden bij ons bewerkt in bepaalde batches.
Bijvoorbeeld een batch tot 1000 stuks kost € 50,- per batch.
Een batch van 2000 stuks kost €75,- per batch.
Ik heb een tabel mat daarin de verschillende batches van een bepaald artikel.
Dat ziet er zo uit.
batch_ID, artikel_ID, batch_grootte, batch_prijs.
Hierin staan de volgende rijen:
1, 119, 1000, 50.00
2, 119, 2000, 75.00
Nu zou ik graag willen dat ik doormiddel van php/mysql kan bepalen hoeveel batches van 2000 het zijn en hoeveel van 1000.
Het resultaat vaan hierboven zou moeten zijn.
4 batches tot 2000 stuks en 1 batch tot 1000 stuks.
Nu zou ik willen weten hoe ik dat moet aanpakken. de moeilijk zit hem in een bepaald aantal.
Bijvoorbeeld 500 is 1 batch tot 1000.
Maar 1500 is een batch tot 2000 en niet 2 van 1000.
Ik moet dus kunnen zien of een aantal tussen 2 verschillende batches in valt.
Kunnen jullie mij opweg helpen?
Alvast bedankt!
Groeten Johan
Gewijzigd op 27/05/2012 17:44:10 door Johan Rombouts
Code (php)
1
2
3
4
5
2
3
4
5
SELECT batch_prijs, batch_grootte
FROM table
WHERE batch_grootte > ".$aantal."
ORDER BY batch_grootte DESC
LIMIT 0, 1
FROM table
WHERE batch_grootte > ".$aantal."
ORDER BY batch_grootte DESC
LIMIT 0, 1
Dit geeft de hoogste batch-prijs/grootte ONDER het aantal.
Dus bij 3530 geeft ie 3000 (90 euro bijvoorbeeld).
Je zou die laatste 530 (even aftrekken) nog kunnen kijken naar kleinere batches.
Dat doe je in een while.
Tot zo ver lukt dat ook.
Als ik bijvoorbeeld 9530 artikelen heb kan ik zo uitrekenen dat er 3 batches zijn van 3000.
Maar dan komt het. Ik heb er dan nog 530 over.
Ik heb bijvoorbeeld nog een batchgrootte van 1000 en 500. Nu zou hij dus die van 1000 moeten pakken, omdat 530 meer is dan 500.
Ik zeg: welke is het hoogste (ORDER en LIMIT) die LAGER IS dan 530.
Dat is dus 500.
Stel ik heb voor artikel B 3 verschillende batches:
- batch 1 = 10000 stuks a 90 euro
- batch 2 = 5000 stuks a 60 euro
- batch 3 = 2500 stuks a 45 euro
b.v. De klant levert 14500 artikelen aan om te bewerken.
Dit zijn 1 batch van 10000 en 1 batch van 5000.
b.v. De klant levert 37500 artikelen aan.
Dit zijn 4 batches van 10000 (dat is het goedkoopst)
b.v. De klant levert 33500 artikelen aan.
Dit zijn 3 batches van 10000 en 1 batch van 5000
Dit zou er moeten gebeuren.
Ik dacht bij, bijvoorbeeld 37.500 dus aan:
3x 10.000
1x 5.000
1x 2.000
1x 500
Op zich niet erg, maar het worden wat lusjes meer.
Tip: haal met 1 query de batches uit de database en stop die in een php-array.
En ga daar mee rekenen. Dat gaat sneller dan elke keer een nieuwe batch uit de database halen.