如何使用Rails计算数据库中的连续元素?

时间:2010-08-02 17:32:36

标签: ruby-on-rails database

有没有办法可以查询数据库,只返回根据设定变量连续(及时)发生的元素?

具体来说,我需要了解用户连续赢了多少次游戏。游戏存储在具有属性win_loss的数据库中(1是胜利,0是失败)。

我想看看用户是否连续赢了3场比赛。有没有办法在数据库中执行此操作?

如果没有,它在应用程序中会是什么样子?

如果这令人困惑,我提前道歉。请提出问题,我会尽力清理。我正在使用Ruby on Rails。

1 个答案:

答案 0 :(得分:2)

我会采取不同的方法。我会在您的用户模型中添加一列continuous_wins(如果您需要,负数也可能代表连续损失)。

编辑:如果您确实需要查询...

两个问题:

  1. 为给定用户选择最新的胜利和最新的松散(可以在一个查询中完成,在SQL SELECT max(created_at) AS newest, win_loss FROM games GROUP BY win_loss中(我不记得现在如何在Rails中进行分组功能,但你应该明白)
  2. 然后,关于查询(1)的结果:
    1. 如果找到最新的胜利和最新的失败,请计算条件为created_at > newest_win AND created_at > newest_lose
    2. 的游戏
    3. 如果发现最新的赢或输,用户总是喝酒或总是失去,只计算他的比赛数
    4. 在其他情况下没有游戏
  3. 我建议将列添加到用户模型中,当您需要显示游戏玩家的整个表格以及他们的连续获胜/失败时,它会更好。