Ruby on rails 按子属性值之和排序模型
我有团队,团队有多个成员资格。每个会员都有积分。我想根据这些会员积分的总和来订购团队 例如: 团队很棒| 10分 团队良好| 8分 因为: 团队真棒Ruby on rails 按子属性值之和排序模型,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有团队,团队有多个成员资格。每个会员都有积分。我想根据这些会员积分的总和来订购团队 例如: 团队很棒| 10分 团队良好| 8分 因为: 团队真棒 成员1,积分:5 成员2,积分:5 团队良好: 成员1,积分:5 成员2,分:3 但我似乎找不到解决方案。我没有足够的声誉发表评论。所以我在这里指定我的观点。这是团队数据及其成员数据在同一个表中还是团队数据在一个表中,成员数据在另一个表中。您使用的是哪个数据库。如果是MySQL或Oracle,您可以使用聚合函数和CASE语句其次是通过命令来
- 成员1,积分:5
- 成员2,积分:5
- 成员1,积分:5
- 成员2,分:3
但我似乎找不到解决方案。我没有足够的声誉发表评论。所以我在这里指定我的观点。这是团队数据及其成员数据在同一个表中还是团队数据在一个表中,成员数据在另一个表中。您使用的是哪个数据库。如果是MySQL或Oracle,您可以使用聚合函数和CASE语句其次是通过命令来解决这个问题 您可以使用这样的查询(如果您使用的是MySQl数据库) 在team.rb中 内部控制器 在视图中(示例)
= 10 %>
在哪里订购?正在观看?在查询中?您想要分组和顺序还是只需要顺序?在视图中,在“只想要顺序”中,我设法显示分组的点,但不按它们进行排序。这正是您所需要的。数据的模式是什么?您能给出一些示例代码让我们看看吗?成员资格是属于团队的一个表。团队是一个有许多成员的表。点是成员身份的一个属性。@user3562152根据您的需要编辑了答案。如果您不需要团队表中的任何属性,可以省略连接条件
SELECT t.team_id,t.team_name,sum(t1.points) as sum_of_points,
case
when sum(t1.points)=10 then "Awsome"
when sum(t1.points)=8 then "good"
else "default"
end as credit
from team t join team_membership t1 on(t.team_id=t1.team_id)
group by t1.team_id order by sum_of_points desc
has_many :memberships
def total_points
self.memberships.sum(:points)
end
@teams = Team.all.sort_by {|team| team.total_points }.reverse
<% @teams.each do |team| %>
<tr>
<td><%= team.total_points %></td>
<% if team.total_points >= 10 %>
<td><%= "awesome" %></td>
<% else %>
<td><%= "good" %></td>
<% end %>
</tr>
<% end %>