我有2张桌子
class DepartmentBudget < ApplicationRecord
has_many :budget_details, dependent: :destroy
end
class BudgetDetail < ApplicationRecord
belongs_to :department_budget
end
每个部门都有特定时期的预算。每个部门都有许多budget_details,其中包括所有贷方和借方分录,并保持余额。
问题是我想根据最新预算明细的余额对部门预算进行排序。
DepartmentBudget
.joins(:budget_details)
.select('budget_details.balance, department_budgets.*')
.order("budget_details.balance ASC")
.distinct
我已经实现了上面的查询,但是返回的是重复记录。问题在于 select 子句,如果我先删除select之后再进行区分工作,但是我必须将select与distinct一起使用。任何帮助将不胜感激。
答案 0 :(得分:0)
DepartmentBudget.includes(:budget_details).order("budget_details.balance ASC")
答案 1 :(得分:0)
不清楚您的目的是什么,但是如果我们假设您的SQL在逻辑上是正确的,那么您应该使用<input id="uniqueValuesSelect" data-dojo-type="dijit.form.ComboBox" value="statename" onchange="app.zoomRow(document.getElementById('uniqueValuesSelect').value, document.getElementById('uniqueValuesSelect2').value);" />
<input id="uniqueValuesSelect2" data-dojo-type="dijit.form.ComboBox" value="FarmedAcres" onchange="app.zoomRow(document.getElementById('uniqueValuesSelect').value, document.getElementById('uniqueValuesSelect2').value);" />
子句和聚合函数来实现您的目的。
GROP BY