Ruby on rails 联接子查询中的计数和求和-我可以使用ActiveRecord构建此sql查询吗?
我正在学习ActiveRecord。我可以建立这个查询吗Ruby on rails 联接子查询中的计数和求和-我可以使用ActiveRecord构建此sql查询吗?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我正在学习ActiveRecord。我可以建立这个查询吗 @sales_by_product = ActiveRecord::Base.connection.execute("SELECT it.name, it.id, it.seller_id, pur.volume, pur.sales FROM items it INNER JOIN (SELECT item_id, COUNT(*) AS v
@sales_by_product = ActiveRecord::Base.connection.execute("SELECT
it.name,
it.id,
it.seller_id,
pur.volume,
pur.sales
FROM items it
INNER JOIN (SELECT
item_id,
COUNT(*) AS volume,
SUM(price) AS sales,
workflow_state AS state
FROM purchases
WHERE workflow_state = 'payment_successful'
GROUP BY item_id,
workflow_state) pur
ON pur.item_id = it.id
WHERE it.seller_id = '" + current_user.id.to_s + "'")
我希望尽可能多地使用AR api,但我还没有让上面的内容只使用AR
谢谢 我认为在这个查询中使用AR不是一个好主意。一开始似乎很有趣,但后来变得很烦人。而且,以后很难改变 您可以创建自己的查询生成器:
def query_for current_user
<<-SQL
SELECT
it.name,
it.id,
it.seller_id,
pur.volume,
pur.sales
FROM items it
INNER JOIN (SELECT
item_id,
COUNT(*) AS volume,
SUM(price) AS sales,
workflow_state AS state
FROM purchases
WHERE workflow_state = 'payment_successful'
GROUP BY item_id,
workflow_state) pur
ON pur.item_id = it.id
WHERE it.seller_id = '" + current_user.id.to_s + "'")
SQL
end
@sales_by_product = ActiveRecord::Base.connection.execute( query_for( current_user ))
def query\u用于当前用户
ActiveRecord是一个很好的ORM,但有时您希望直接编写原始sql。它更直接,更精确。我认为ActiveRecord有它的局限性……也许您可以描述一下sql语句应该返回什么,以帮助我们帮助您。