08. november 2000 - 03:43Der er
4 kommentarer og 1 løsning
SQL til random banner der favoriserer lavere hitantal
Jeg har den her query der graver ned i min banner database og returnerer ét random banner.
mysql_query(\"SELECT BannerID, Banner, URL, ((BannerID*0)+rand()) AS RandomID FROM $db_table WHERE (((UserID=\'$ID\')AND(Size=\'$Size\'))AND((CountDisplay < MaxDisplay)OR(MaxDisplay = -1))) ORDER BY RandomID LIMIT 0, 1\")
Nu er det blot at tilfældigheden spiller et puds og nogle bannere får flere hits end andre... Jeg vil derfor gerne favorisere de bannere der har en lavere CountDisplay men ikke altid den mindste... (ved tilføjelse af nyt banner vil den favoriseres for meget) men en der har CountDisplay = 10 skal altså have større chance end CountDisplay = 50000.
Hvordan er det lige man udtrykker det i et enkelt SQL udtræk og kan det lade sig gøre ?
Byg meget gerne videre på mit ovenstående eksempel.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Er der ingen der ved noget eller er spørgsmålet bare blevet glemt ?
SELECT BannerID, Banner, URL, ((BannerID*0)+rand()) AS RandomID FROM $db_table WHERE (((UserID=\'$ID\')AND(Size=\'$Size\'))AND((CountDisplay < MaxDisplay)OR(MaxDisplay = -1))) ORDER BY RandomID LIMIT 0, 1
Lj: Du skal nok lade antallet indgå i betingelsen. Noget i retning af SELECT ... rand()*CountDisplay AS RandomID FROM ... ORDER BY RandomID ASC LIMIT 0, 1 Få visninger giver ganget med et tilfældig tal typisk et mindre resultat end mange visninger ganget med at andet tilfældigt tal (mon min gamle lærer i statistik læser dette, hehe) Hvis du vil udjævne det lidt, men stadig med fordel til de få visninger, så læg et eller andet passende tal til (som skal afpasses de aktuelle antal du nu engang har) SELECT ... rand()*(CountDisplay+1) AS RandomID FROM ... ORDER BY RandomID ASC LIMIT 0, 1
Ups, jeg vil nok sige at det rand()*(CountDisplay+1) nok skal være mindst rand()*(CountDisplay+1000) hvis du f.eks. har et antal visninger, der er på nogle tusind eller flere
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.