Is there any algorithm to make some ad display at random more often than others

Hi,
I have a table of advertisement with expiry date and location. Currently, I display ad at random base on user’s location.

In the near future, I want to add tier system in to my ad sale. It means the first tier ad should be displayed more often than the second tier, but I don’t know how to control that.

Is there any existing solution for my problem?

Thank you,

Anyone? Here’s the code I’ve been done so far:
Creating a table:


$mysqli->query("CREATE TABLE `ads` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `uid` INT NOT NULL,
  `txt` TEXT NOT NULL,
  `date` DATE NOT NULL default '0000-00-00',
  `img` VARCHAR( 120 ) NOT NULL,
  `location` VARCHAR( 75 ) NOT NULL,
  `expiry` DATE NOT NULL default '0000-00-00',
PRIMARY KEY ( `id` ),
UNIQUE (
  `id`
  )
) ENGINE = INNODB CHARACTER SET UTF8 COLLATE utf8_general_ci
")
or die("DB error!");

Random with PHP:


SELECT id, uid, img, location, expiry
FROM ads
WHERE location = '$location' AND CURDATE() < expiry AND RAND()<(SELECT ((1/COUNT(*))*10) FROM ads)
ORDER BY RAND()
LIMIT 1

Some one suggests I have to add some sort of percentage but I wasn’t lucky with Google search.

similar thread on (shock!) another forum yesterday…

Thank you. Any added knowledge is good news. I’m now convinced that it is seriously problematic. I’ll abandoned this until getting further information.

Thank you again.

I found a solution. This is nothing new. Here it is: http://www.kahunaburger.com/2008/10/13/selecting-random-weighted-records-from-mysql/