【问题标题】:ActiveRecord where condtion on selected query resultActiveRecord where 选择查询结果的条件
【发布时间】:2018-06-18 03:24:05
【问题描述】:
Borrower.joins("INNER JOIN receivables ON receivables.borrower_id = borrowers.id")
.where("borrowers.type='moulde_b'")
.select(" borrowers.id as id,sum(receivables.amount) as invoice_amount");

从上面的结果集中,我试图在 select 语句之后执行 where 条件。

我正在尝试类似下面的方法,

Borrower.joins("INNER JOIN receivables ON receivables.borrower_id = borrowers.id")
    .where("borrowers.type='moulde_b'")
    .select(" borrowers.id as id,sum(receivables.amount) as invoice_amount").where("receivables.amount = 12323.23");

SUM 列上选择 where 条件后真的可以这样做吗?

【问题讨论】:

    标签: mysql ruby-on-rails ruby ruby-on-rails-4 activerecord


    【解决方案1】:

    使用ActiveRecord::QueryMethods#having 代替where

    Borrower.
      joins("INNER JOIN receivables ON receivables.borrower_id = borrowers.id").
      where("borrowers.type = 'moulde_b'").
      select("borrowers.id as id, sum(receivables.amount) as invoice_amount").
      group("borrowers.id"). # mandatory for having
      having("invoice_amount = 12323.33")
    

    链接这些方法的顺序并不重要,因为AR 会在构建真正的 SQL 查询时重新排列它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多