Как мне сделать этот более сложный запрос в Rails? - PullRequest
0 голосов
/ 01 ноября 2011

Не понимает, как выразить запрос определенного типа с помощью синтаксиса ActiveRecord.

Company 
has_many shareprices
  • Когда процессы запускаются для обновления shareprices, в таблице shareprice создается новая запись. Таким образом, вы, очевидно, получите множество строк для каждой компании. В таком сценарии вы можете получить 1 компанию с 5 записями очень высокой цены за последний период времени.

Итак, допустим, я хочу вернуть компании, которые в настоящее время имеют самую высокую цену акций за последний период времени - мне нужно, чтобы она в основном вернула максимальную цену для этой компании из таблицы shareprices, а затем нашла следующую.

  • Я не могу понять, как это сделать с помощью синтаксиса ActiveRecord. Я перепробовал множество подходов, вдохновленных другими ответами stackoverflow, но неизменно не могу заставить его вернуть уникальные компании, поэтому мне не хватает точки где-то вокруг выбора уникального, объединения, группировки или чего-то еще.

Среда: серверная часть postgresSQL развертывается на heroku.

Помощь очень ценится.

1 Ответ

2 голосов
/ 01 ноября 2011

Не зная вашей структуры, трудно дать конкретный ответ.Но что-то вроде этого должно работать.

Company.select('max(share_prices.price) as price,companies.id').joins(:share_prices).group(:id).order('price')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...