2015-10-18 53 views
0

對此查詢有更好的解決方案嗎?Rails爲聯接查詢提供更好的解決方案

Video.where.not(id: Video.joins(:categories).where(categories: { id: [20,21,22]}).select(:id)) 

對我來說,這似乎是這樣矯枉過正的查詢,但我不知道如何編寫更好的解決方案。

任何想法?

回答

0

除非有什麼我錯過了你想要查詢的內容,爲什麼不直接使用內部查詢呢?或者您是否遇到視頻並不總是具有類別的情況?

內查詢:

Video.joins(:categories).where.not(categories: { id: [20,21,22]}) 

如果視頻並不總是有分類:

Video.includes(:categories).where.not(categories: { id: [20,21,22]}) 
+0

我想這沒有這些類別的所有視頻。 我不知道爲什麼,但我發佈的查詢作品,但你沒有。 –

+0

嘗試使用eager_load而不是連接/包含或在連接調用中寫入左外連接查詢。當我們使用連接或包含內部連接與其他表。如果您需要除與類別[20,21,22]關聯的視頻之外的所有視頻,則需要使用條件進行左外連接。 –