Kom ihåg mig?
Home Menu

Menu


MySQL, random + biased/weighted mot äldsta?

 
Ämnesverktyg Visningsalternativ
Oläst 2014-03-13, 18:41 #11
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
Har testat en av möjligheterna nu och är ganska nära det jag vill åt, äldsta har definitivt mer "vikt" men ser ut att ha ganska seriösa "brytpunkter" och senaste inlägget har löjligt låg "vikt" :P Så får fixa en bättre logaritmiskt urval som slumpgenerator sen, fibonacci är ju en ganska enkel lösning



Kod:
CREATE TABLE `NewsPostsTest` (
  `PostID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `PostTitle` varchar(512) CHARACTER SET utf8 COLLATE utf8_swedish_ci DEFAULT NULL,
  `PostTime` datetime DEFAULT NULL,
  `PostViewCount` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`PostID`),
  KEY `PostTime` (`PostTime`)
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8;

PHP-kod:
<?php


for ($i 0$i 2$i++) {


// Select random year-month-day without the - and weighted to newest, it will be reversed in the query
$TheRand mt_rand(mt_rand(2012010120141212),20141212 );





$PostQuery $db->prepare("
    SELECT
        *,
        DATE_FORMAT(PostTime, '%Y%m%d') as SuperTime
    FROM
        NewsPostsTest
    HAVING
        SuperTime <= 
$TheRand
    ORDER BY
        RAND()
    LIMIT
        5
"
);


$PostQuery->execute();




while (
$PostData $PostQuery->fetch(PDO::FETCH_ASSOC)) {


$PostUpdate $db->query("
    UPDATE
        NewsPostsTest
    SET
        PostViewCount    = PostViewCount+1
    WHERE
        PostID            = '
{$PostData[PostID]}'
"
);


// End of PostData while loop



// End of for loop
(ja, allt är fulkodat nu under testet)

Senast redigerad av JesperA den 2014-03-13 klockan 18:44
JesperA är inte uppkopplad   Svara med citatSvara med citat
 


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:11.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017