我在Rails 3应用程序中有以下模型,并选择了需求:
class Item < AR has_many :holdings
class Holding < AR belongs_to :item
持有模型有一个“活动”布尔值。
我想找到每一个项目有0个'积极'控股(它可能有任何数量的联合控股),我已经尝试了不少组合。
SELECT * from items JOIN (SELECT holdings.item_id, count(ifnull(item_id,0)) AS hcount FROM holdings WHERE holdings.active = "t" GROUP BY holdings.item_id HAVING hcount = 0) ON items.id = holdings.item_id
但这只会返回大于0的计数。
有人能指点我正确的方向吗?
当你说“有”的时候不要用“数”!
使用不存在子句。
SELECT * from items i where not exists(select holdings.item_id from holdings where holdings.active = 't' and holdings.item_id = i.item_id)
英语中的这句话是说,如果项目中没有匹配的行,请给出其中的所有行。