我正在Rails控制台中工作。我想在两个不同的表中选择同一个命名列的SUM。从Rails中的多个表中选择求和结果
这里是我的ActiveRecord的代码:
Computer.joins(:services, :repairs)
.select("computers.id, SUM(services.cost) as SCOST, SUM(repairs.cost) as RCOST")
.group("computers.id")
这种运作良好,并返回以下正确的SQL:
`SELECT computers.id, SUM(services.cost) as SCOST, SUM(repairs.cost) as RCOST
FROM "computers" INNER JOIN "services" ON "services"."computer_id" = "computers"."id"
INNER JOIN "repairs" ON "repairs"."computer_id" = "computers"."id"
GROUP BY computers.id `
但它给出了Rails的控制台以下结果:
=> [#<Computer id: 36>, #<Computer id: 32>]
我不应该能够访问我的SUM值吗?我在postgres中运行了上面的SQL查询,并给出了所需的输出。
任何帮助,将不胜感激。
谢谢。
你应该仍然可以访问总和。我认为AR只显示返回列名及其值的列表。如果您将该查询分配给'computers',请尝试'computers.first.SCOST' – jvnill 2013-03-15 07:32:22
我得到NoMethodError:未定义的方法'SCOST' – Marklar 2013-03-15 07:37:44
我打算建议下载别名,但有人已经回答了这个问题。你可以试试吗? – jvnill 2013-03-15 07:44:54