根据另一个列属性排序表

时间:2018-08-21 22:36:48

标签: sql ruby-on-rails relational-database

好的,所以在我的rails项目中,我有以下模型:poolsmembershipsweek_scores

游泳池has_many :memberships
成员资格has_many :week_scores
WeekScore还具有一个属性week:integer,该属性指示星期几。这样我就知道那个桌子是第1周还是第6周,等等。
WeekScore具有属性score:integer,我在其中保存每个用户的积分。这使我认为我应该将模型名称更改为week_points ...

无论如何,我想向我显示一个表,其中包含所有池成员的列表,这些成员按他们在特定week_score中获得的分数排序。

只是澄清

我现在获得全角蛋白周分数的方法是 member_score = member.week_scores.find_by(week:5).score
// member是池的成员

例如

让我们说第5周

我要显示池中每个成员的第5周得分,按得分的降序排序,如下所示

  1. David .... 30分
  2. John ..... 28分
  3. Josh ..... 28pts
  4. Mike ..... 21pts
    ...等等

实现此目标需要查询什么?香港专业教育学院尝试加入,但它无法正常工作,但我是新来的,所以我很确定这很容易做到,我只是太新了而已。

也..我想阅读有关Rails的数据库和sql的更多信息,所以我对此更加熟悉。有人愿意推荐一本书吗?

1 个答案:

答案 0 :(得分:0)

week5 = Pool.first.memberships.includes(:week_scores)
       .where(:week_scores => {week: 5}).order('week_scores.score DESC')

week5.each do |membership|
  puts "#{membership.member_name}: #{membership.week_scores.first.score}"
end