Ruby on rails Rails 5、Postgesql和按关联分组

Ruby on rails Rails 5、Postgesql和按关联分组,ruby-on-rails,postgresql,ruby-on-rails-5,Ruby On Rails,Postgresql,Ruby On Rails 5,我正努力了解Postgesql和按关联分组 我有一个反复多次的试验。我想按列重复分组,以便在变量中使用。目前我有: @trials = Trial.joins(:repetitions).group('repetitions.repetition_index') 但是,请记住这个错误 PG::GroupingError: ERROR: column "trials.id" must appear in the GROUP BY clause or be used in an aggregat

我正努力了解Postgesql和按关联分组

我有一个反复多次的试验。我想按列重复分组,以便在变量中使用。目前我有:

@trials = Trial.joins(:repetitions).group('repetitions.repetition_index')
但是,请记住这个错误

PG::GroupingError: ERROR:  column "trials.id" must appear in the GROUP BY clause or be used in an aggregate function
现在,从阅读这篇文章开始,我需要在我的分组方法中加入
trials.id
,但当我这样做时,输出不再按
重复进行分组。重复索引
。它似乎是按
试验进行分组的。id

我该如何确保该组仅通过
重复。重复索引

更新

尝试:

@trials = Trial.joins(:repetitions).select('repetitions.repetition_index,repetitions.treatment_index').group('trials.id, repetitions.repetition_index,repetitions.treatment_index')
并致电:

<% @trials.each do |r| %>
    <table class="table table-bordered">
        <tr>
            <td><%= r.repetition_index %></td>
            <td><%= r.treatment_index %></td>
        </tr>
    </table>
<% end %>
当我希望得到:

| |1|
|1|2|
-----
| |1|
|2|2|
-----

如果你想摆脱这个错误,你可以这样做

@trials = Trial.joins(:repetitions).group('trials.id, repetitions.repetition_index')
如果您不想按
trails.id
分组,而想按
repetition.repetition\u index
分组,则只能从查询中选择repetitions.repetition\u index

@trials = Trial.joins(:repetitions).select('repetitions.repetition_index').group('repetitions.repetition_index')
让我知道你是否清楚

更新 根据你的最新问题,我认为你需要以下内容。查询未经测试。如果不起作用,请告诉我

 Trial.
 joins(:repetitions).
 select('repetitions.repetition_index,repetitions.treatment_index').
 group_by {
    |repetition| repetitions.repetition_index
  }

谢谢Vishal。明白这一切。但我还想在重复协会中加入另一个专栏,名为:治疗指数。把它包括在组中似乎会撤销重复。重复索引分组,这是我很难理解的。然后你必须用父表分组,在你的例子中是trails。我认为这不会影响你的成绩。你试过了吗?如果我将trials.id包含在group方法中,那么这似乎也忽略了repetitions.repetition\u索引组。你也可以在从中获取结果后使用数组的“uniq”方法query@DollarChills尝试在组中添加两个
trails.id,repetition.repetition\u index
 Trial.
 joins(:repetitions).
 select('repetitions.repetition_index,repetitions.treatment_index').
 group_by {
    |repetition| repetitions.repetition_index
  }