Ik ben bezig met een backoffice systeempje waarin verschillende relaties worden bijgehouden die hun eigen prijsafspraken hebben op verschillende producten. Deze prijsafspraken hebben een datum/tijd waarop ze actief worden.
Hiervoor heb ik de volgende tabel;
Nou ben ik op zoek naar de laagste prijs die op dit moment voor een bepaalde relatie geldt.
Stel een relatie zit in prijsgroep a en b en ik wil de prijs voor product 1 opvragen. Als ik de volgende query uitvoer
Kom ik tot de prijs van 6.5. Maar dit klopt niet aangezien deze prijs niet meer actief is omdat er 2013-12-30 00:00:00 een nieuwe prijs in die groep actief is geworden. De prijs moet 7.5 zijn aangezien dit de laagste prijs is die op dit moment actief is (groep b)
Hoe kan ik ervoor zorgen dat ik alleen de prijzen krijg met de activatietijd het dichtst bij nu maar wel in het verleden?
Hiervoor heb ik de volgende tabel;
product | prijsgroep | prijs | activatie |
1 | a | 9.5 | 2013-12-30 00:00:00 |
1 | b | 7.5 | 2013-12-29 00:00:00 |
1 | a | 6.5 | 2013-12-27 00:00:00 |
2 | a | 13.5 | 2013-12-30 00:00:00 |
2 | a | 6.5 | 2013-12-28 00:00:00 |
Nou ben ik op zoek naar de laagste prijs die op dit moment voor een bepaalde relatie geldt.
Stel een relatie zit in prijsgroep a en b en ik wil de prijs voor product 1 opvragen. Als ik de volgende query uitvoer
SELECT * FROM tabel WHERE product = '1' AND (prijsgroep = 'a' OR prijsgroep = 'b') AND activatie < 'NOW' ORDER BY prijs ASC LIMIT 1
Kom ik tot de prijs van 6.5. Maar dit klopt niet aangezien deze prijs niet meer actief is omdat er 2013-12-30 00:00:00 een nieuwe prijs in die groep actief is geworden. De prijs moet 7.5 zijn aangezien dit de laagste prijs is die op dit moment actief is (groep b)
Hoe kan ik ervoor zorgen dat ik alleen de prijzen krijg met de activatietijd het dichtst bij nu maar wel in het verleden?
67890