假设我有posts
和categorizations
。
Post(id)
Categorization(post_id, topic_id)
我想获取不属于特定主题ID的帖子。
在我的情况下,我在加入Post to Categorizations时必须使用内连接,因为我还有其他要执行的过滤器。
我该怎么做?
我尝试了以下内容:
Post.joins(:categorizations).where("categorizations.topic_id != ?", doomed_topic_id)
但这会返回仍有其他主题的帖子。它仅适用于只有一个主题恰好是不需要的主题的帖子。
例如,如果我有一个包含2个类别的帖子(注定的topic_id和另一个主题),则此查询失败并实际获取它,而不是将其过滤掉。
答案 0 :(得分:0)
尝试:
Posts.where('not exists
(select * from categorizations
where post_id = posts.id and
topic_id = ?)', doomed_id)