【问题标题】:Rails 3 and Active Record Query - 2 informations in one queryRails 3 和 Active Record 查询 - 一次查询中包含 2 个信息
【发布时间】:2011-09-03 08:23:29
【问题描述】:

我正在寻找一种方法,如何获取数据库中的数据语句(这很简单)以及如何获取项目数。我整天都在为这个问题苦苦挣扎,但不知道如何解决它......

我有以下结构:

ID: first: second: name:
1    2      5       Emma
2    2      5       Emma
3    3      4       Luis
4    5      2       Mark

我想得到以下声明:

Emma
Luis
Mark

这很容易。但是对于每个名称,我想添加有关数据库中行数的信息,对于此示例,它将类似于:

Emma 2
Luis 1
Mark 1

第一个语句可以通过查询Model.where("some condition")得到,但是我不知道,如何得到第二个语句...

提前谢谢你

【问题讨论】:

    标签: mysql ruby-on-rails-3 activerecord model


    【解决方案1】:

    你可以使用Model.where("some condition").count & youll 之类的计数方法得到它

    【讨论】:

    • 但如果我使用Model.where("some condition").count,那么我将只获得行数,我需要行数和数据(Emma、Luis、Mark)
    【解决方案2】:
    Model.group(:name).count
    

    这应该返回

    {"Emma" => 2, "Luis" => 1, "Mark" => 1}
    

    【讨论】:

    • 我正在考虑...但是此查询将只返回两列,或者不返回?是否可以返回所有列?
    • 当你有一个像count 这样的聚合函数时,为什么你想要所有的列?仅当所选列也是 group_by 子句的一部分时才有意义。
    • 因为这个表和另一个表之间是关系。所以我将使用@data=Model.group(:name).countview 我需要使用data.RELATIONSHIP.COLUMN_FROM_ANTH_TABLE。现在如果我将使用data.RELATIONS.COLUMN_FROM_ANTH_TABLE,那么我将收到关于undefined method RELATIONS' for [.., ..]:Array` 的错误。对不起,我是新手,也许我忽略了其他重要的事情
    【解决方案3】:

    你可以使用:

    User.select('users.*, count(*) AS times').group(:name)
    

    在这种情况下,您拥有用户模型的所有属性 + 次数,这是名称属性的计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多