mysql: Abfrage mit Gewichtung
split.s
- datenbank
0 Vinzenz Mai0 Jonny 5
Ich habe eine Tabelle mit Werbebannern.
Nun will ich einzelnen Bannern eine Gewichtung zuteilen.
Je höher die Gewichtung ist, desto häufiger soll der Banner angezeigt werden.
Die Banner werden mit RAND() ermittelt.
Die Gewichtung speichere ich in der Spalte "weight".
Habt ihr eine Idee, wie man die Abfrage umsetzen könnte?
Bisher:
SELECT banner_id, html FROM banners ORDER BY RAND()
Hallo,
Je höher die Gewichtung ist, desto häufiger soll der Banner angezeigt werden.
Habt ihr eine Idee, wie man die Abfrage umsetzen könnte?
vor kurzen gab es zu einem vergleichbaren Problem einen Thread. Der Lösungsansatz von Hopsel (und Jürgen) könnte etwas für Dich sein.
Freundliche Grüße
Vinzenz
Hi,
Habt ihr eine Idee, wie man die Abfrage umsetzen könnte?
Bisher:
SELECT banner_id, html FROM banners ORDER BY RAND()
Idee:
agenommen 1 <= weight <= 10 (10 hat immer chance angezeigt zu werden, 1 nur 10% + p von einem höheren durch RAND() verdrängt zu werden
"... ORDER by (weight >= ".rand(1,10).") DESC, RAND() LIMIT 1"
(weight >= ".rand(1,10).") = 1, wenn wahr.
DESC könnte sein: 1 1 1 0 0 0 -> Weitere RAND()
ciao, Jonny 5