我有两张桌子
CREATE TABLE `shares` (
`id` int(11) NOT NULL auto_increment,
`entry_id` int(11) default NULL,
`service` int(11) default NULL,
`created_date` datetime default NULL,
`ip` varchar(45) default NULL,
PRIMARY KEY (`id`),
KEY `entry_id` (`entry_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2570 DEFAULT CHARSET=latin1;
CREATE TABLE `entries` (
`id` int(11) NOT NULL auto_increment,
`first_name` varchar(255) default NULL,
`last_name` varchar(255) default NULL,
`street_address` varchar(255) default NULL,
`city` varchar(255) default NULL,
`postal_code` varchar(255) default NULL,
`province` varchar(255) default NULL,
`daytime_phone` varchar(255) default NULL,
`email_address` varchar(255) default NULL,
`tos` int(11) default NULL,
`subscribe` int(11) default NULL,
`ip` varchar(45) default NULL,
`created_date` datetime default NULL,
`pin` varchar(255) default NULL,
`return` int(11) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`),
KEY `email_address` (`email_address`)
) ENGINE=InnoDB AUTO_INCREMENT=36503 DEFAULT CHARSET=latin1;
我需要从两个表中生成10个随机记录。
信息:每个分享都是一次额外的投票,但人们可以使用多种服务进行分享(每项服务仍然是一次额外的投票)并分享多次(这仍然是一次额外投票)。
因此,我需要从条目中随机输入10条记录,并考虑是否存在单个条目ID,然后从中进行选择。
实施例,
User 1
User 2
User 3
User 4 1 Share
User 5
User 6 1 Share
User 7 2 Shares
User 8
User 9
User 10 3 Shares
这将需要并生成随机记录
User 1 (1 chance)
User 2 (1 chance)
User 3 (1 chance)
User 4 1 Share (2 chances)
User 5 (1 chance)
User 6 1 Share (2 chance)
User 7 2 Shares (2 chance)
User 8 (1 chance)
User 9 (1 chance)
User 10 3 Shares (2 chance)
我不知道怎么做到这一点?任何帮助
答案 0 :(得分:0)
我的方法是从'entries'创建一个包含10个随机id的数组,然后查看这些id是否存在于'shares'中。如果他们这样做,那么第二次将该id放入数组中,给他们第二次机会。然后它是从那个结束数组中随机选择的。
这样做的一种方法可能是:
$entryIdArray = array();
$query = mysql_query(SELECT * FROM entries ORDER BY RAND LIMIT 10);
while($row = mysql_fetch_array($query)){
$entryIdArray[] = $row['id'];
}
foreach($entryIdArray as $thisEntrant){
$query = mysql_query(SELECT * FROM shares WHERE entry_id = $thisEntrant);
if(mysql_num_rows($query) > 0){
$entryIdArray[] = $thisEntrant;
}
}
$winningEntrantId = $entryIdArray[rand(0, sizeof($entryIdArray)-1)];
我从未尝试在循环遍历同一个数组时添加到数组中,因此您可能必须创建一个单独的数组来将所有ID添加到该数组中,但这显示了基本的想法。