日期:2014-05-17  浏览次数:20786 次

如何判断一段时间内某个账号的写入次数。。如何自动锁定和解锁。
比如我一个如下数据库,有表table1和table2

其中table1的结构如下:
table1记录了投票用户的投票时间time_sj,投票选择的那些企业vote,投票的类别。


time_sj vote class

2011-12-08 17:01:00 1|2|4 1  
2011-12-08 17:02:00 2|4 2  
2011-12-08 17:11:00 3|4|5 1  
2011-12-08 17:11:00 3 1  
2011-12-08 17:11:00 2|3|4|5 2  
2011-12-08 17:14:00 1|5 1  
2011-12-08 17:17:00 2|3 1  
2011-12-08 17:19:00 1|4 1  
   

其中class代表不同的用户。vote里面的 1|2|4 表示用户选择了这几个投票选项。
难点,如何判断class=1,且投票选项编号为2的单位时间的投票次数。
因为每个投票企业编号用|隔开的,用素组如何识别。并且这个这个是活动的,有可能是2|3|4|5,有可能是1|2, 有可能是1,但是最多不超过4个。。。这个是自定义的。。。


table2
table2记录了投票名称qy_gr_name、投票名称对应的编号uid,投票的类别class,和是否锁定状态shuo(0为没有锁定,1为锁定状态。),锁定时间ssj。


uid字段就和table1里面的vote字段里面的数字对应。。

qy_gr_name uid class shuo ssj  
qy1 1 1 0 锁定时间
qy2 2 1 0 锁定时间
qy3 3 1 0 锁定时间
qy4 4 1 0 锁定时间
qy5 5 1 0 锁定时间
gr1 1 2 0 锁定时间
gr2 2 2 0 锁定时间
gr3 3 2 0 锁定时间
gr4 4 2 0 锁定时间
gr5 5 2 0 锁定时间
gr6 6 2 0 锁定时间

其中class代表不同的投票,比如我现在运行了两个投票程序,一个是评选企业的,一个是评选个人的,class=1就代表是评选企业,class=2就是评选个人的。

比如第一条记录,就是说某网友在2011-12-08 17:01:00时间选择了1|2|4 同时class=1,即为企业评选里面的编号为1|2|4 的企业投票。。



如何判断出在5分钟内,某个用户投票了多少次。

比如判断class=2的个人投票在5分钟内投票了多少次,怎么写sql?

如果在5分钟内的投票超过30次,则把shuo这个字段对应的0变成1。
然后在45分钟内,自动把变成1的转变成0;

接着,如果在五分钟内投票超过了30次,则把0转换成1.

如此自动循环下去。

这么做的目的监视刷票的,如果他五分钟刷票三十次,就自动锁定。。。



我就是想实现的目的,一个用户如果在5分钟内登陆了3次,则吧这个账号锁定45分钟。45分钟后自动解锁。。

------解决方案--------------------