根据关联表中的条件从表中获取记录

时间:2015-03-13 06:52:33

标签: sql ruby-on-rails postgresql activerecord rails-activerecord

我有两个模型SchoolExpense,其中学校有很多费用,Expense有一个名为cost的属性

我试图仅提取费用高于某个值的学校,让我们说1000,我试过这个查询

School.includes(:expenses).where("lower(schools.name) LIKE '%a%' and expenses.cost >= 1000").select('*').from('schools, expenses')

这个查询的问题是如果学校有多个成本大于1000的费用,它会返回重复值,我想要的只是基于条件的独特学校。

请帮忙!

1 个答案:

答案 0 :(得分:1)

School.
joins(:expenses).
where("lower(schools.name) LIKE ?", "%a%"). # part of the code you shared
where("expenses.cost > ?", 1_000).
group("schools.id")