【问题标题】:How to pass a variable in Rails find_by_sql and group_by如何在 Rails find_by_sql 和 group_by 中传递变量
【发布时间】:2019-06-27 09:11:59
【问题描述】:

我有 2 张桌子。 due_loans 和付款。 Payments 表有 due_loan_id。现在我想找到属于到期贷款的所有付款并在下面的 SQL 中执行计算。 此 sql 查询在 MySQL 工作台中运行良好。但是,我无法在 Rails 中工作。我不知道如何在 find_by_sql 中传递变量和组。

select d.id dueid, d.issue_loan_id, d.duedate,d.dueamount, sum(ifnull(amount, 0))paid, dueamount - sum(ifnull(amount, 0))balance from due_loans d
left join payments p
on d.id = p.due_loan_id
where d.issue_loan_id = 15
group by dueid

如果没有支付相应的到期贷款,那么我将分配 0 用于计算。在其他解决方案中,这是我尝试过的。

  def get_due_loans_results
   @dueloans = DueLoan.find_by_sql(["select d.id dueid, d.issue_loan_id, d.duedate, d.dueamount, sum(ifnull(amount, 0))paid, dueamount - sum(ifnull(amount, 0))balance from due_loans d
                                left join payments p
                                on d.id = p.due_loan_id
                                where d.issue_loan_id =?", params[:issue_loan_id]].group_by => 'dueid')
   respond_to do |format|
   format.json  {render json: @dueloans}
  end
end

【问题讨论】:

    标签: jquery mysql ruby-on-rails ruby


    【解决方案1】:

    你有没有尝试过:

    DueLoan.find_by_sql(["select d.id dueid, d.issue_loan_id, d.duedate, d.dueamount, sum(ifnull(amount, 0))paid, dueamount - sum(ifnull(amount, 0))balance from due_loans d
                                    left join payments p
                                    on d.id = p.due_loan_id
                                    where d.issue_loan_id = ? group by dueid", params[:issue_loan_id]])
    

    【讨论】:

    • 现在我有了,它可以工作了。我认为 group 总是最后的论点。非常感谢。
    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 2018-10-21
    • 2020-08-31
    • 2016-02-16
    • 1970-01-01
    相关资源
    最近更新 更多