I am having a hard time with this very simple project. Maybe it’s because it’s Monday, I’m not sure.
I have a table that looks like this:
id | weight | hits
------------------------------------------------
1 | 4 | 0
2 | 1 | 0
3 | 2 | 0
Obviously, the hits column will increment by 1 each time that particular record is selected (We will run this update from within our PHP script).
How can I best retrieve these records by their weight? What I mean is that if I ran my query 15 times, I would want the following IDs returned:
1
1
1
1
3
3
2
1
1
1
1
3
3
2
1
We have a simple formula in place that we got online that retrieves a random weighted result, but we aren’t running the formula enough to statistically balance out the results, so instead we need to do a simple rotation as described above.
I know that this is a simple problem to solve, but I’m having a hard time coming up with the best way to do it today.
I hope I’ve been clear enough in my description of the problem.
Unless I’m missing something (it is Monday here too after all), can’t you just sort by
hits / weightandLIMIT 1?