【发布时间】:2020-08-12 15:57:17
【问题描述】:
这类问题到处都是……但这是我的问题。
我有 Rails 模型:Organization、Activity、Donation、DonationItem。我正在尝试为每个 Organization 获取 Activity.hours 和 DonationItem.amount 的总和。
我不能使用直接关系(例如:Organization.activities.pluck(:hours).sum,因为我处于必须使用 Organization.select("...").group(...) 的情况。
当前的 rails 连接如下,尽管在这个阶段它们显然是不正确的:
@relation = Organization.joins(:activities, donations: :donation_items)
.select("organizations.id, sum(activities.hours), sum(donation_items.amount)")
.group("organizations.id")
这是SQL结构(基本上...)+select位于这里:http://sqlfiddle.com/#!17/fb932e/6
这是不希望查看 SQL Fiddle 的人们的选择
select
o.id,
sum(a.hours) as "hours",
sum(di.amount) as "amount"
from organizations o
inner join activities a
on a.organization_id = o.id
inner join donations d
on d.organization_id = o.id
inner join donation_items di
on di.donation_id = d.id
group by o.id
;
我明白问题是什么,只是没有解决它的方法......
任何帮助将不胜感激。谢谢。
【问题讨论】:
标签: ruby-on-rails postgresql inner-join