为另一个表中的每个第n个条目在一个表中添加行

时间:2009-10-19 06:42:01

标签: php mysql database

基本上我所拥有的是一个用户每10条评论获得奖励的系统。因此,在数据库中,一个表捕获评论,另一个表添加每10个评论的奖励。例如,如果用户添加了40条评论,那么它们将在表2中有4个奖励/ 4行。

这对我来说听起来很简单,但我似乎无法想象。想到可能有一个模数运算符可以帮助,但我需要每次在表2中添加一个新行,而不是覆盖,或每次重写行。

帮助表示赞赏;我感觉它就在我面前!

5 个答案:

答案 0 :(得分:2)

奖励是否唯一,以便您实际 在单独的表格中跟踪它们?或者您可以只计算用户在需要号码时所做的评论数量吗?

如果您确实需要在单独的表中跟踪奖励,请考虑触发器:

create trigger insert_trigger after insert on comments_table
for each row begin
    if (select count(*) from comments_table where user_id = new.user_id) mod 10 = 0 then
        insert into rewards_table (user_id) values (new.user_id);
    end if;
end;

如果您允许从评论表中删除,您还需要在评论表上使用相应的on delete触发器来测试用户是否仍有正确的奖励数量,如果没有,则您需要必须决定删除哪个。

答案 1 :(得分:0)

每次发布​​评论时,您都必须计算用户添加的评论数量。如果评论%10 == 0,那么您必须在表2中添加一个新行(用于奖励)。

答案 2 :(得分:0)

  • 插入
  • 选择count()一个用户的评论
  • if number_of_comments % 10 == 0 - >在奖励表中插入

这就是我应该这样做的方式。

答案 3 :(得分:0)

我猜你有第一个表的模型,或者至少是一个执行插入的函数。您可以为该功能提供更多功能,并执行以下操作:

$current = count_your_current_coments();
if (fmod($current, 10) == 0) {
    insert_into_second_Table();
} 

答案 4 :(得分:0)

我的想法是你需要将额外的字段作为标记。您可以将其命名为奖励,这是枚举。 “是”表示“是”或“否”表示否。每次插入注释时,都可以保存默认值“N”并检查数据库。

SELECT count(my_comment) FROM comments WHERE rewarded = 'N';

使用modulo检查它是否达到10条评论。如果是,请在另一个表中插入一行,并将奖励字段更新为'N'到'Y'