Uitleg van het probleem.
Er zijn 3 machines, namelijk 1, 2 en 3.
Iedere machine heeft de mogelijkheid om geld uit te keren. Echter zal hij de muntjes met de minste waarde als eerste uitkeren (dus eerst die van 1ct tot deze op zijn, vervolgens de muntjes van 5ct tot deze op zijn en tenslotte die van 10ct).
Je vraagt aan een machine niet een bedrag maar het aantal muntjes. (Dus geeft mij 10 muntjes, waarna de machine dus zoals hier boven staat beschreven jou zijn 10 laagste muntjes zal uitkeren).
tijdens een reset zal een machine terug keren naar een bepaalde begin waarde.
Deze waarde vind je terug in de onderstaande tabel.
Dit houdt dus in dat:
* Machine 1 na een reset 10 muntjes van 1ct, 10 muntjes van 5ct en 5 muntjes van 10ct heeft.
* Machine 2 na een reset 25 muntjes van 5 ct heeft.
* Machine 3 na een reset 10 muntjes van 1ct en 15 muntjes van 10ct heeft.
Naast deze tabel die de begin situatie bijhoudt is er ook nog een tabel die bijhoudt hoeveel muntjes er zijn uitgegeven sinds de laatste reset.
In het bovenstaande voorbeeld zie je dus dat:
* machine 1 reeds 13 muntjes heeft uitgegeven (dit zou dus 10x1ct en 3x5ct zijn geweest).
* machine 2 reeds 20 muntjes heeft uitgegeven (20x5ct volgens de bovenstaande tabellen).
* machine 3 reeds 7 muntjes (7x1ct volgens de bovenstaande tabellen).
De vraag
Met het bovenstaande ingedachte wil ik nu een query opstellen die de volgende vraag stelt (als het ware).
Geef mij van elke machine X muntjes. Ik wil vervolgens dus een overzicht terug die mij vertelt welke muntjes ik dan van iedere machine zou ontvangen..
Voorbeeld (op basis van bovenstaande tabellen).
Vraag: Geeft mij 2 muntjes.
Antwoord:
niks bijzonders.. Iedere machine geeft mij gewoon 2 muntjes van de laagste waarde die hij nog bezit.
Stel dat ik nu ipv 2 muntjes om 5 muntjes had gevraagd.
Antwoord:
Zoals je zie geven machine 1 en 2 mij gewoon 5 muntjes van de laagste waarde. Machine 3 geeft mij eerst 3x1ct waarna hij ook nog 2x10ct geeft omdat hij niet meer genoeg muntjes van 1ct had.
Stel dat ik nu ipv 2 muntjes om 10 muntjes had gevraagd.
Antwoord:
In dit geval zou machine 1 mij eerst zijn laatste 7 muntjes van 5ct geven en vervolgens nog 3x10ct.
Machine 2 keert niks uit aangezien hij/zij niet meer voldoende muntjes heeft.
En machine 3 zal mij opnieuw eerst de 3 laatste muntjes van 1ct geven en vervolgens nog 7 van 10ct.
Het probleem
Ik krijg het dus niet voor elkaar om het bovenstaande probleem aan de hand van een SQL-statement op te lossen.
Natuurlijk kan ik alles selecteren en dan met PHP aan de gang gaan, maar stel dan het nu in eens niet 3 maar een miljoen apparaten zijn, die ieder duizende verschillende muntjes hebben. Dan wil je echt niet alles eerst naar PHP overhalen.
uit eindelijk zou ik eigenlijk via SQL willen berekenen welke machine mij het hoogste bedrag geeft als ik om X muntjes vraag (en welk bedrag dat dan is).
Iemand enige tips hoe ik dit voor elkaar zou kunnen krijgen? Tips hoe ik mijn tabellen het beste op kan zetten, etc, etc..
Alle tips zijn welkom en als je vragen hebt stel ze me dan gerust.
Er zijn 3 machines, namelijk 1, 2 en 3.
Iedere machine heeft de mogelijkheid om geld uit te keren. Echter zal hij de muntjes met de minste waarde als eerste uitkeren (dus eerst die van 1ct tot deze op zijn, vervolgens de muntjes van 5ct tot deze op zijn en tenslotte die van 10ct).
Je vraagt aan een machine niet een bedrag maar het aantal muntjes. (Dus geeft mij 10 muntjes, waarna de machine dus zoals hier boven staat beschreven jou zijn 10 laagste muntjes zal uitkeren).
tijdens een reset zal een machine terug keren naar een bepaalde begin waarde.
Deze waarde vind je terug in de onderstaande tabel.
code:
1
2
3
4
5
6
7
8
9
| Tabel: restant_overzicht
<machine_id> | <aantal> | <Muntwaarde>
--------------------------------------
1 | 10 | 1ct
1 | 10 | 5ct
1 | 5 | 10ct
2 | 25 | 5ct
3 | 10 | 1ct
3 | 15 | 10ct |
Dit houdt dus in dat:
* Machine 1 na een reset 10 muntjes van 1ct, 10 muntjes van 5ct en 5 muntjes van 10ct heeft.
* Machine 2 na een reset 25 muntjes van 5 ct heeft.
* Machine 3 na een reset 10 muntjes van 1ct en 15 muntjes van 10ct heeft.
Naast deze tabel die de begin situatie bijhoudt is er ook nog een tabel die bijhoudt hoeveel muntjes er zijn uitgegeven sinds de laatste reset.
code:
1
2
3
4
5
6
| Tabel: uitgegeven_overzicht
<machine_id> | <reeds_uitgeggeven>
----------------------------------
1 | 13
2 | 20
3 | 7 |
In het bovenstaande voorbeeld zie je dus dat:
* machine 1 reeds 13 muntjes heeft uitgegeven (dit zou dus 10x1ct en 3x5ct zijn geweest).
* machine 2 reeds 20 muntjes heeft uitgegeven (20x5ct volgens de bovenstaande tabellen).
* machine 3 reeds 7 muntjes (7x1ct volgens de bovenstaande tabellen).
De vraag
Met het bovenstaande ingedachte wil ik nu een query opstellen die de volgende vraag stelt (als het ware).
Geef mij van elke machine X muntjes. Ik wil vervolgens dus een overzicht terug die mij vertelt welke muntjes ik dan van iedere machine zou ontvangen..
Voorbeeld (op basis van bovenstaande tabellen).
Vraag: Geeft mij 2 muntjes.
Antwoord:
code:
1
2
3
4
5
| <machine_id> | <aantal> | <Muntwaarde>
--------------------------------------
1 | 2 | 5ct
2 | 2 | 5ct
3 | 2 | 1ct |
niks bijzonders.. Iedere machine geeft mij gewoon 2 muntjes van de laagste waarde die hij nog bezit.
Stel dat ik nu ipv 2 muntjes om 5 muntjes had gevraagd.
Antwoord:
code:
1
2
3
4
5
6
| <machine_id> | <aantal> | <Muntwaarde>
--------------------------------------
1 | 5 | 5ct
2 | 5 | 5ct
3 | 3 | 1ct
3 | 2 | 10ct |
Zoals je zie geven machine 1 en 2 mij gewoon 5 muntjes van de laagste waarde. Machine 3 geeft mij eerst 3x1ct waarna hij ook nog 2x10ct geeft omdat hij niet meer genoeg muntjes van 1ct had.
Stel dat ik nu ipv 2 muntjes om 10 muntjes had gevraagd.
Antwoord:
code:
1
2
3
4
5
6
| <machine_id> | <aantal> | <Muntwaarde>
--------------------------------------
1 | 7 | 5ct
1 | 3 | 10ct
3 | 3 | 1ct
3 | 7 | 10ct |
In dit geval zou machine 1 mij eerst zijn laatste 7 muntjes van 5ct geven en vervolgens nog 3x10ct.
Machine 2 keert niks uit aangezien hij/zij niet meer voldoende muntjes heeft.
En machine 3 zal mij opnieuw eerst de 3 laatste muntjes van 1ct geven en vervolgens nog 7 van 10ct.
Het probleem
Ik krijg het dus niet voor elkaar om het bovenstaande probleem aan de hand van een SQL-statement op te lossen.
Natuurlijk kan ik alles selecteren en dan met PHP aan de gang gaan, maar stel dan het nu in eens niet 3 maar een miljoen apparaten zijn, die ieder duizende verschillende muntjes hebben. Dan wil je echt niet alles eerst naar PHP overhalen.
uit eindelijk zou ik eigenlijk via SQL willen berekenen welke machine mij het hoogste bedrag geeft als ik om X muntjes vraag (en welk bedrag dat dan is).
Iemand enige tips hoe ik dit voor elkaar zou kunnen krijgen? Tips hoe ik mijn tabellen het beste op kan zetten, etc, etc..
Alle tips zijn welkom en als je vragen hebt stel ze me dan gerust.
[ Voor 34% gewijzigd door Uhmmie op 11-09-2008 18:04 ]
Currently playing: MTG Arena (PC)
