SQL'ers, ik zit met een vraagstuk:
In onze webshop wordt op basis van verkopen in het verleden een bepaald inkoopadvies gegenereerd. Daarbij hoort een bepaalde formule.
Nu moet de formule zo aangepast worden, dat het een variabele "aantal dagen actief" heeft. Dit is het aantal dagen dat het product op actief heeft gestaan (een product kan actief of inactief zijn).
Dit betekent dus dat, in de database, bijgehouden moet worden wanneer een product actief of inactief is geworden: elke keer als dit veranderd wordt er een regel weggeschreven met de datum en de status van het product.
productX actief 01.01.2007
productX inactief 01.02.2007
productX actief 15.02.2007
productX inactief 19.03.2007
etc.
Is dit een goede manier en: hoe kan ik in een eenvoudige SNELLE! query het aantal dagen opvragen dat het product actief is geweest in de laatste X maanden.
een tweede manier is dat ik een extra kolom opneem, dat bijhoud hoeveel dagen het product actief is geweest sinds de laatste activatie. elke keer als het product van status veranderd, bekijk ik het laatste record, bereken het aantal dagen en voeg dit toe aan het record:
productX actief 01.01.2007 0
productX inactief 01.02.2007 31
productX actief 15.02.2007 0
productX inactief 19.03.2007 32
de query is nu eenvoudiger: sum(dagen) / where datum between X and Y / group by product
echter, volgens de normalisatie regels is deze kolom een 'proces gegeven' (omdat het ook af te leiden is d.m.v. de rijen en data).
Wie heeft hier een goed (ander) idee voor, of geeft me een goede query voor de eerste oplossing ?
In onze webshop wordt op basis van verkopen in het verleden een bepaald inkoopadvies gegenereerd. Daarbij hoort een bepaalde formule.
Nu moet de formule zo aangepast worden, dat het een variabele "aantal dagen actief" heeft. Dit is het aantal dagen dat het product op actief heeft gestaan (een product kan actief of inactief zijn).
Dit betekent dus dat, in de database, bijgehouden moet worden wanneer een product actief of inactief is geworden: elke keer als dit veranderd wordt er een regel weggeschreven met de datum en de status van het product.
productX actief 01.01.2007
productX inactief 01.02.2007
productX actief 15.02.2007
productX inactief 19.03.2007
etc.
Is dit een goede manier en: hoe kan ik in een eenvoudige SNELLE! query het aantal dagen opvragen dat het product actief is geweest in de laatste X maanden.
een tweede manier is dat ik een extra kolom opneem, dat bijhoud hoeveel dagen het product actief is geweest sinds de laatste activatie. elke keer als het product van status veranderd, bekijk ik het laatste record, bereken het aantal dagen en voeg dit toe aan het record:
productX actief 01.01.2007 0
productX inactief 01.02.2007 31
productX actief 15.02.2007 0
productX inactief 19.03.2007 32
de query is nu eenvoudiger: sum(dagen) / where datum between X and Y / group by product
echter, volgens de normalisatie regels is deze kolom een 'proces gegeven' (omdat het ook af te leiden is d.m.v. de rijen en data).
Wie heeft hier een goed (ander) idee voor, of geeft me een goede query voor de eerste oplossing ?