【问题标题】:Rails 3 finding parents which have no childRails 3找到没有孩子的父母
【发布时间】:2013-01-27 11:36:26
【问题描述】:

在没有计数器缓存的一对多关系中,我如何找到没有孩子的父母?

用户.rb

has_many :pages

page.rb

belongs_to :user

我试过了

User.includes(:pages).where("pages.user_id is NULL")

这给 MySQL 带来了麻烦。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    试试

    User.joins("left join pages on pages.user_id = users.id").where("pages.user_id is null")
    

    【讨论】:

    • 谢谢,对我也有很大帮助!
    【解决方案2】:

    一种方法是

    User.where("(SELECT COUNT(*) FROM pages WHERE pages.user_id = users.id) = 0")
    

    但我不确定这样做的效率如何。

    【讨论】:

    • count(*) 不是我个人想要运行的东西,如果它是一个常见的查询。
    【解决方案3】:

    我相信类似的东西

     User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")
    

    可能也有用...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      相关资源
      最近更新 更多