1

我有一个条目,用户可以每天投票一次。我将其保存在我的数据库中。
现在我需要检查是否允许用户再次对此条目进行投票(一天后)。

到目前为止,我得到了这个:

SELECT count(*) 
FROM entries e
WHERE e.voterID =1
AND e.pID =1
AND e.date < NOW( ) - INTERVAL 1 
DAY   

但这并不能很好地工作,当在数据库中有更多的选民和 pid 条目时。一个选民可以对同一个条目进行多次投票。
如果同一用户和同一项目有更多条目,则 count(*) 将我的值设为大于 1。等等。

如何检查是否允许用户再次正确投票?
谢谢。

4

1 回答 1

0

当前用户是否在最近 24 小时内为当前 pID 投票?如果是这样,则votecount此查询中的结果将大于零。

 SELECT count(*) AS votecount
   FROM entries AS e
  WHERE e.voterID = 1
    AND e.pID = 1
    AND e.date >= NOW() - INTERVAL 1 DAY

注意>=日期的比较。您的示例代码说<

当您需要此查询在大型表上有效运行时,您将需要 (voterID, pID, date) 上的复合索引。

于 2013-11-04T17:48:30.760 回答