来源:has_many评论
评论:has_many training_comments
@negative_comments = Source.joins(:comments => [:training_comments]).where("training_comments.category_id = ? and comments.spam = ?", 2, false).select("sources.*, count(comments.id) as ncount").group("comments.source_id")
我想列出其负面评论数量的来源,但我遗失了没有negative_comments的来源(training_entries.category_id = 2)。我尝试了一切来实现这一目标。我试过左连接,我试过ifnull但没有一个工作。任何帮助都会非常感激..
我正在尝试做什么
来源计数
source1 5
source2 0
source3 13
我得到的是
来源计数
source1 5
source3 13
来源表
id: integer
name: string
评论表
id: integer
source_id: integer
spam: boolean
Training_comments表
id: integer
comment_id: integer
category_id: integer
答案 0 :(得分:0)
你得到零,因为标准JOIN在没有匹配时不会产生任何结果。你需要获得LEFT OUTER JOIN过去的ActiveRecord;像这样的东西:
joins('LEFT OUTER JOIN comments ON comments.source_id = sources.id')
AFAIK,您必须下拉到SQL以获得LEFT OUTER JOIN。