我有团队,团队有多个会员资格。每个会员都有积分。我想通过这些会员积分的总和来订购团队。
示例:
团队很棒| 10分
团队好| 8分
由于:
团队精彩
团队合作:
但我似乎无法找到解决方案。
答案 0 :(得分:0)
我没有足够的声誉来评论。所以我在这里指明我的观点。这个团队数据及其成员数据在同一个表或一个表中的团队数据和另一个表中的成员资格数据。您使用的是哪个数据库。如果是MySQL或Oracle,您可以使用聚合函数和CASE语句,然后按顺序来解决此问题。
您可以使用这样的查询(如果您使用的是MySQl数据库)
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
答案 1 :(得分:0)
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 %>