代码之家  ›  专栏  ›  技术社区  ›  hometoast

如何在ActiveRecord中选择最大子值?

  •  0
  • hometoast  · 技术社区  · 13 年前

    我都不知道该怎么说,举个例子:

    我有两个模型,

    Chicken   
      id   
      name
    
    EggCounterReadings
      id   
      chicken_id   
      value_on_counter
      timestamp
    

    我不总是记录每只鸡的计数。

    使用ActiveRecord 我如何得到每只鸡的最新蛋数?

    所以如果我有一只鸡和三只鸡的话,今天是1只,明天是15只,第二天是18只。那只鸡生了18个蛋,不是34个

    更新 :找到了我在MySQL中要做的事情。找到“ The Rows Holding the Group-wise Maximum of a Certain Column ". 所以我需要 .find_by_sql("SELECT * FROM (SELECT * FROM EggCounterReadings WHERE <conditions> ORDER BY timestamp DESC) GROUP BY chicken_id")

    1 回复  |  直到 13 年前
        1
  •  1
  •   Brian    13 年前

    考虑到你最新的问题,我改变了我的回答。

    chicken = Chicken.first
    count = chicken.egg_counter_readings.last.value_on_counter
    

    如果你不想要最新的记录,但是想要最大的卵子产量,那么试试这个:

    chicken = Chicken.first
    count = chicken.egg_counter_readings.maximum(value_on_counter)
    

    我相信那应该是你想要的。