如何在Rails中执行更复杂的查询?

时间:2011-11-01 00:01:04

标签: sql ruby-on-rails activerecord

不了解如何使用ActiveRecord的语法表达特定类型的查询。

Company 
has_many shareprices
  • 当进程运行以更新shareprices时,将在shareprice表中创建一个新条目。因此,您显然最终会为每家公司提供大量的股票行。在这种情况下,最终可能会有一家公司在上一个时间段内拥有5个非常高的股价条目。

所以,假设我想要返回目前在上一期间股价最高的公司 - 我需要它基本上从shareprices表中返回该公司的最高价格,然后找到下一个。

  • 我无法弄清楚如何使用ActiveRecord语法。我尝试过很多灵感来自其他stackoverflow答案的方法,但总是无法让它返回独特的公司,所以我在某处选择了独特的,加入的,分组的或其他的东西。

环境:postgresSQL后端部署到heroku。

非常感谢。

1 个答案:

答案 0 :(得分:2)

在不了解您的结构的情况下,很难提供具体的答案。但是这样的事情应该有效。

Company.select('max(share_prices.price) as price,companies.id').joins(:share_prices).group(:id).order('price')