Мой запрос выглядит (немного), как это:Как выразить несколькими столами присоединиться к Rails
SELECT
t.strategy_id, SUM(t.price*t.qty), p.currency
FROM
trades t, products p
WHERE
t.symbol = p.symbol and
(DATE(trade_time) > '2015-01-01' and DATE(trade_time) < DATE(NOW()))
GROUP
BY t.strategy_id, SYMBOL, DATE(trade_time) WITH ROLLUP
Как бы мне лучше всего выразить это в «Rails-у»? Поскольку результатом является соединение полей из двух таблиц, следует ли создать модель StrategyPnl? Должен ли он произойти из ActiveRecord :: Base? Наверное, нет, потому что нет таблицы для нее, или ...?
Btw, у меня нет связей между этими таблицами, это требование?
Я хотел бы написать что-то вроде:..
stratpnl.select(), где() группа() ....
и получить массив этого нового класса/модели, но я не могу выяснить, как это сделать?
************************* EDIT ******************** *******
Я simplyfying вопрос, так как фактические таблицы не важны в этом вопросе:
Предположим, две таблицы а и в без каких-либо отношений (FK или другой)
SELECT A.FIELD_Y, B.FIELD_X
FROM A,B
WHERE A.INTEGER_X > B.INTEGER_Y
GROUP BY A.NAME
Есть ли способ выразить этот запрос в Rails с хорошими моделями? Я знаю, что могу это сделать:
@result = ActiveRecord::Base.connection.execute(sql)
, но это будет только дать мне двумерный массив полей, я предпочел бы использовать ActiveRecords functionalty и относятся к объектам и полям, так как его там.
какая у вас БД? –
MySQL версия 5.6.19 –
Поделитесь модельными отношениями. – Humza