例如,我有2个表格:主题和注释。加入表格 - Rails 3中的关联
主题has_many评论。评论属于主题。
评论表有专栏sender_id我保存用户的ID,谁创建此评论。
任务:选择未由该用户评论的主题的id(我知道user_id)。 (我想用一个查询来完成)。
早些时候我这样做。 (两个查询)(我的数据库 - PostgreSQL的)
incorrect_topics = Comment.select(:topic_id).where(:sender_id => user_id).map { |elem| elem.topic_id }
ids = select(:id).where(["id NOT IN (?)", incorrect_topics]).map { |elem| elem.id }
它工作正常,但我想,如果应用程序变大这将是严重的问题。
谢谢。
我没有尝试,但它必须工作。但是,我可以做不通过查询中的查询。但只有一个查询?不能加入帮助我吗? JOIN可以更快吗? – makrusak 2012-02-05 09:24:29
@ rusak1:查询优化器将知道如何处理这样的简单查询,并且它具有清晰的优势。 – 2012-02-05 09:39:51
最后一个问题:您对JOIN有什么看法?它快吗?数据库很难吗? – makrusak 2012-02-05 09:45:04