|
| Vægtet random-funktion [asp.net/mssql] Fra : Jens Gyldenkærne Cla~ |
Dato : 13-01-04 14:15 |
|
Jeg skal lave et annoncesystem med forskellig vægtning af de
enkelte annoncer. Hver annoncør har et fast antal point som han kan
fordele over en række forskellige kategorier. Når besøgende på
websiden søger inden for en kategori der har tilknyttet annoncer,
skal annoncemodulet så udvælge én annonce fra puljen. Udvælgelsen
skal være tilfældig, men vægtet efter pointfordelingen i
kategorien.
Annoncer og kategorier håndteres i en database (SQL-server 2000).
Jeg vil gerne have nogle bud på hvordan jeg laver en fornuftig
udvælgelse af annoncen.
Mit eget bud er at oprette en tabel som her:
tblBannerPoint
id_banner (link til bannertabellen)
id_kategori (link til kategoritabellen)
- og så oprette en post for hvert point en annonce har i en given
kategori. Herefter kan jeg finde en tilfældig post fra tabellen med
følgende kommando:
SELECT TOP 1 id_banner FROM tblBannerPoint ORDER BY newID()
"Order By newID()" fungerer fint til at vælge tilfældige poster fra
en tabel - det bruger jeg i øjeblikket til en anden annoncefunktion
hvor der ikke skal vægtes forskelligt. Jeg skal kun have én annonce
ud i det nye system, så selv om det samme id kan stå mange gange i
tabellen, giver det ikke problemer med gentagne annoncer.
Rent teknisk mener jeg derfor at ovenstående model skulle fungere -
den er bare lidt upraktisk i brug fordi jeg skal oprette et hav af
poster for hver annonce.
Det ville være langt enklere med en tabelstruktur som her:
tblBannerPoint
id_banner
id_kategori
point
- men så ved jeg ikke hvordan jeg skal udvælge posten.
Er der nogen gode ideer?
Krydspostet til dk.edb.programmering.dotnet og dk.edb.database -
opfølgning til dotnet-gruppen (ret evt. selv til databasegruppen
hvis I har rene databaseløsninger).
X-Post über 2 Gruppen, FollowUp-To dk.edb.programmering.dotnet
--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information
| |
Jens Gyldenkærne Cla~ (14-01-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 14-01-04 10:15 |
|
Jens Gyldenkærne Clausen skrev:
> Jeg skal lave et annoncesystem med forskellig vægtning af de
> enkelte annoncer.
Lidt googling gav følgende løsning - godt nok udviklet til
asp.old/sql-server, men den kan fungere lige så fint i asp.net.
< http://www.4guysfromrolla.com/webtech/092700-1.shtml>
--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information
| |
|
|