0

我正在运行 MySQL,并且我有一个网站,用户可以在该网站上匿名投票给自己和其他用户的文章。我正在使用 GD-rating 1.9,他禁用了基于 cookie 和 IP 的文章的两次投票。但是,我让拥有来自 ISP 的动态 IP 的用户删除 cookie 并每天为自己投票。

我想要一种 SQL 方式(最好但 php 可以)来查看每篇文章的摘要,其中来自同一城市的人为该文章投票超过 3 次。

日志文件的格式如下:

CREATE TABLE IF NOT EXISTS `wp_gdsr_votes_log` (
  `record_id` int(11) NOT NULL AUTO_INCREMENT,
  `id` int(11) DEFAULT NULL,
  `vote_type` varchar(10) DEFAULT 'article',
  `multi_id` int(11) DEFAULT '0',
  `user_id` int(11) DEFAULT '0',
  `vote` int(11) DEFAULT '0',
  `object` text NOT NULL,
  `voted` datetime DEFAULT NULL,
  `ip` varchar(32) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `comment_id` bigint(20) unsigned DEFAULT '0',
  `city` varchar(255) NOT NULL,
  `region` varchar(255) NOT NULL,
  `country` varchar(255) NOT NULL,
  `zipcode` int(11) NOT NULL,
  PRIMARY KEY (`record_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=21263 ;

id指文章并city指选民所在的城市。


只是为了澄清这user_id仅适用于登录用户,这是一小部分选民。

我也知道这不会阻止任何类型的代理投票,但我在我的投票代码中反驳说,如果在机器投票上打开了某些端口,我什至不考虑它(苛刻的技术,但有效)。

我也知道有可能来自大城市的用户可能有很多人使用该网站,或者人们可能有来自同一城市的朋友看到​​文章并为他们投票。如果这看起来像是合法投票,我计划稍后通过使用城市人口来使用有根据的猜测来使用更多数据。产生这个想法的原因是我有一个人住在葡萄牙的一个城市,他的城市人口约为 5000,但一个人的文章每天都在该城市获得 10 票。

4

1 回答 1

0

也许是这样的:

SELECT user_id, SUM(votes) as numvotes, city, country
FROM `wp_gdsr_votes_log`
GROUP BY user_id, city, country
HAVING numvotes > 2

这是未经测试的...

于 2013-06-12T00:21:26.210 回答