2013-08-01 90 views
0

說我的博客有一個帖子表。帖子可以有評論,並且評論錶行具有FK到他們正在評論的帖子。因此,查找所有帖子有沒有評論在所有可以通過選擇「comments.id爲空」來完成。SQL查找沒有生氣評論的博客文章

但是,讓我們添加一個Comment.tone列,其中可以有5個值之一,如「支持」或「生氣」等。

現在我想找到所有沒有生氣評論的帖子。當你詢問「所有不存在的行,但如果他們確實有'生氣'的值,選擇」comments.id爲NULL「的SQL技術不起作用。

那麼如何選擇它們呢?

+0

順便說一句,我的實際問題無關通過博客,帖子或評論。我使用這個例子,因爲它很簡單和熟悉。請不要告訴我如何使用一些Wordpress技巧來解決這個人造問題! –

+0

模型的名稱是發佈和評論? –

回答

1

試一試假設模型的名稱是Post和Comment。

和他們有關係,像

Post has_many :comments 

Comment belongs_to :post 

Post.joins(:comments).where(tone: 'angry').all 

沒有生氣

Post.joins(:comments).where('tone is not in (?)', ['angry']).all 

or 

Post.joins(:comments).where(tone: ['happy', 'abc']).all 
+0

這會給我所有的帖子生氣的評論。 但我想要的是所有帖子,**不**有任何憤怒的評論。 –

+0

@RandyJParker代碼已更新。 –

+0

修改後的查詢將提供對該帖子沒有生氣的所有評論。但是我想要的是所有沒有憤怒評論的帖子。因此,我可能會收到成千上萬個評論中沒有生氣的帖子,但仍然錯過了其他數千個根本沒有評論的帖子。 –

相關問題