【问题标题】:Rails two table join depending on filled values in has_many tableRails 两个表连接取决于 has_many 表中的填充值
【发布时间】:2015-01-29 10:35:30
【问题描述】:

我需要创建一个查询,该查询将根据会议返回所有买家

我有 2 个模型

class Buyer < ActiveRecord::Base
  has_many :meetings
end

class Meeting < ActiveRecord::Base
  belongs_to :buyer
end

Buyers(id, name)
Meetings(id, buyer_id, value)

现在我需要创建一个查询,它将返回所有没有会面的买家,值为 false

我的意思是从这些记录中:

Buyers:

1, Toms
2, Ingus

Meetings

1, 1, true
2, 1, false
3, 2, true
4, 2, true

应该只选择 Ingus

编辑:

我猜查询看起来像这样

select * from Buyers where id in (select buyer_id from Meetings where value = false group by buyer_id having count(*) = 0)

但是如何在 Rails 中如此漂亮?

【问题讨论】:

    标签: sql ruby-on-rails join


    【解决方案1】:

    你可以试试这个吗?

    Buyer.joins(:meetings).where("meetings.value = ?", false).distinct
    

    【讨论】:

    • 这是错误的,它会返回买家,他们的会议是真的,其他的都是假的。如果我没记错的话,它将返回多个与同一买家相似的记录
    • 我已经编辑过了,你可以检查一下,你可以使用 distinct 或者就像 select("DISTINCT(field name)")
    • 你错过了我的观点。如果有一个买家至少有一次会议的价值为真,那么您是否使用 distinct 并不重要,它会选择它。我只需要那些拥有一切真实的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2015-11-20
    • 1970-01-01
    • 2014-05-22
    • 2020-12-15
    • 2014-04-09
    相关资源
    最近更新 更多