如何确定容量达到最大容量的次数

时间:2014-09-14 10:46:07

标签: php mysql sql

示例 mysql表名为“Profile”数据如下

----------------------
user_id | max_capacity
----------------------
100          3
101          5
103          10

另一个名为“Active”数据的mysql表,如下所示

-------------------------
user_id | active_capacity
-------------------------
101          7
103          5

请注意表格“有效”列 - active_capacity是动态的,其值每秒都会被另一个脚本更改。

我想确定我的user_id #101是否点击了{Profile}表中active_capacity允许的max_capacity 5。请注意“有效”表格现在显示user_id #101active_capacity7

如果我的$hit=2第一次点击/ user_id #101,我想定义最大匹配值max_capacity,然后我想将其值存储到另一个名为“Danger”的表中“

存储user_id #101因为它的active_capacity现在是7,超过了max_capacity

mysql表“危险”数据如下

--------------
user_id | hits
--------------
101          1

5分钟后,user_id #101 mysql表中的active_capacity“活动”减少到4

再过5分钟后,user_id #101 mysql表中的active_capacity“有效”增加到10所以我要在此处更新“危险”表格user_id #101hits到“2”

请注意:我想更新“危险”表格列hits值,只有在“活动表格”中的active_capacity减少后,其active_capacity值再次增加并点击/来自“个人资料”表

max_capacity

这个脚本可以在cron作业中使用。我需要建议,实现上述目标的最有效方法是什么。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用MySQL的on duplicate key update功能将其作为一个语句来执行此操作。这假设user_id是Danger表上的主键。 SQL还假设user_id在其他两个表上是唯一的:

insert into Danger (
    user_id, hits
) select
    p.user_id, 1
from
    Profile p
        inner join
    Active a
        on a.user_id = p.user_id
where
    a.active_capaciy > p.max_capacity
on duplicate key update set
    hits = hits + 1;

Example SQLFiddle