【发布时间】: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
在没有计数器缓存的一对多关系中,我如何找到没有孩子的父母?
用户.rb
has_many :pages
page.rb
belongs_to :user
我试过了
User.includes(:pages).where("pages.user_id is NULL")
这给 MySQL 带来了麻烦。
【问题讨论】:
标签: ruby-on-rails
试试
User.joins("left join pages on pages.user_id = users.id").where("pages.user_id is null")
【讨论】:
一种方法是
User.where("(SELECT COUNT(*) FROM pages WHERE pages.user_id = users.id) = 0")
但我不确定这样做的效率如何。
【讨论】:
我相信类似的东西
User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")
可能也有用...
【讨论】: