首页 文章

PG :: InvalidColumnReference:按关联表排序时出错

提问于
浏览
0

我正在尝试根据每个(雇主)拥有的相关记录(Employee)的数量对表(雇主)进行排序/排序 .

以下代码适用于rails控制台,其中Employer记录按员工的数量排序:

Employer.joins(:employees).group(:id).order('count(employees.id)ASC')

但是,当实际尝试在开发时运行它时,我收到此错误:

PG :: InvalidColumnReference:错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中

虽然我可以使用'sort_by',但我希望将结果放在ActiveRecord :: Relation格式中 . 任何帮助都将不胜感激 .

1 回答

  • 0

    通过在表达式中添加 distinct ,我能够在控制台中重现此错误:在您的情况下,它将是: Employer.distinct.joins(:employees).group(:id).order('count(employees.id) ASC')

    错误消息表明您必须将按( count(employees.id) )排序的表达式添加到选择列表中 . 这可以通过显式指定选择列来实现:

    Employer.select('employers.id, count(employees.id)').joins(:employees).group(:id).order('count(employees.id) ASC')
    

相关问题