Как связать или объединить области с подзапросами или find_by_sql - PullRequest
1 голос
/ 02 февраля 2011

Я бы хотел выполнить запрос как

SELECT * FROM ( SELECT * FROM products ORDER BY price ASC ) AS s GROUP BY item;

, которые возвращают самый дешевый из всех продуктов для каждого элемента. Использование этого подзапроса хорошо, поскольку он может выполняться за O (N logN).

Так что я могу найти это с помощью find_by_sql, но было бы неплохо иметь возможность связать его с другими областями действия для Product.

Кто-нибудь знает, как написать это как область видимости или цепочку и найти find_by_sql?

1 Ответ

6 голосов
/ 02 февраля 2011

Вы должны быть в состоянии сделать что-то вроде

Product.from("(SELECT * FROM products ORDER BY price ASC) AS products").group(:item)
...