例如,我有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