Как мне объединить таблицу с подзапросом, содержащим агрегатные функции, используя Rails 3.0 - PullRequest
1 голос
/ 26 мая 2011

У меня есть таблица StockPrice, которая содержит метку времени (время), символ тикера (символ) и некоторые другие атрибуты a, b, c и т. Д.

В SQL я написал бы следующее:

Select * 
FROM stock_prices, (SELECT symbol, max(time) as max_time
                    FROM stock_prices
                    GROUP BY symbol) latest_prices
WHERE stock_prices.symbol = latest_prices.symbol
AND stock_prices.time = latest_prices.max_time

Я хочу выразить этот запрос с помощью rails 3.0 ActiveRecord Запрос материала, выбор, группировка и т. Д. Как это сделать?

1 Ответ

0 голосов
/ 27 мая 2011

Хотя это можно сделать с помощью смеси методов Rails и фрагментов SQL, это может привести к путанице.Часто гораздо проще выполнять сложные запросы, подобные этим.

Взгляните на метод find_by_sql, чтобы сделать это в контексте вашей модели: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-find_by_sql

...