【问题标题】:Get users with no postings or no active postings获取没有帖子或没有活跃帖子的用户
【发布时间】:2021-06-14 02:34:36
【问题描述】:

我有一个 rails 架构,我有 users 表和 posts 表。我试图让所有没有帖子或没有活动帖子的用户。活跃是关于可以是真假的帖子的专栏。以下是正确的吗?

User.joins('LEFT JOIN postings on users WHERE postings.user_id = users.id').where('postings.id = NULL').or(where('postings.active = false')).

问题是,如果用户有任何活跃的帖子:真的,我不想要他们,因为他们至少有一个活跃的帖子。我目前正在找回那些有 active: false 帖子但也有 active:true 帖子的用户。

【问题讨论】:

    标签: sql ruby-on-rails activerecord


    【解决方案1】:

    我认为您无需对 left_join 进行过滤,这样我们就可以按用户分组并汇总所有帖子状态,如果总和为零则表示用户不包含任何活动帖子。

    User.left_joins(:postings)
    .group("users.id")
    .having("postings.active IS NULL OR SUM(CAST(postings.active AS TINYINT)) = 0")
    
    # having("SUM(case when postings.active IS NULL OR postings.active = false then 0 else 1 end) = 0")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多