检查用户下载的报告的时差为60秒

时间:2014-03-19 08:22:00

标签: php mysql

我在图书馆用户的多次数据录入检查中遇到问题。

每次用户点击下载链接时,我们都会将其存储在表格中。 我需要检查的是,如果相同的用户使用相同的IP并且在相同的日期下载相同的报告,则应该检查上次插入的日期时间和当前日期时间之间的差异应该超过60秒否则跳过。问题是它存储所有n没有。我们图书馆的用户数据。

查询我正在使用:

select * from tbl_download group by rcode, date, ip order by date desc where libraryuser_id=11

Tbl_download

Rcode          Date                  IP            PrimaryID     Libraryuser_id
 A      2014-03-03 14:39:06     192.168.1.2            1              11
 A      2014-03-03 14:39:13     192.168.1.2            2              11
 A      2014-03-03 14:40:17     192.168.1.2            3              11
 B      2014-03-03 14:44:06     192.168.1.3            4              11
 B      2014-03-03 14:44:18     192.168.1.3            5              11
 B      2014-03-03 14:55:06     192.168.1.3            6              11

我想要的输出 -

Rcode          Date                  IP            PrimaryID     Libraryuser_id
 A      2014-03-03 14:39:06     192.168.1.2            1              11
 A      2014-03-03 14:40:17     192.168.1.2            3              11
 B      2014-03-03 14:44:06     192.168.1.3            4              11
 B      2014-03-03 14:55:06     192.168.1.3            6              11

让我知道任何问题? 谢谢&问候, Sumantto

1 个答案:

答案 0 :(得分:0)

所以你需要的是现在和上次下载之间的时差:

SELECT
  MAX(`date`) - NOW() AS `time_since_last_dl`
FROM `tbl_download`
WHERE 1=1
  AND `libraryuser_id` = {{ USER_ID }}
  AND `ip` = {{ USER_IP }}
  AND `reportcode` = {{ THE_REPORT_CODE }}

在您的下载页面上,您只需检查time_since_last_dl是否符合您的要求(即大于60秒)

如果您想为每个特定(user, IP)对夫妇的每个报告获取此数据,只需添加GROUP BY条款:

SELECT
  reportcode,
  MAX(`date`) - NOW() AS `time_since_last_dl`
FROM `tbl_download`
WHERE 1=1
  AND `libraryuser_id` = {{ USER_ID }}
  AND `ip` = {{ USER_IP }}
GROUP BY
  reportcode