我有点卡在Active Record查询问题上。我想在查询中执行左连接而不是内连接,但joins
方法的结果只返回内连接。
Entry.
joins(:measurements => :measurement_type).
sum(:value, :conditions => ['name = ?','Calories'])
棘手的部分是:measurements
与:measurement_type
有一个belongs_to关系,这是name列所在的位置。
现在这只是为有food_posts的用户返还的金额。目标是为所有用户返回总和。没有食物的用户的总和为零。
我在这里试过谷歌搜索和搜索其他帖子,但还没有找到答案。有什么建议吗?
我也在我的开发环境中使用SQLite和Postgresql进行生产。
答案 0 :(得分:4)
如果你想做一个左连接而不是内连接,你需要使用自定义'sql fragments'
在您的示例中,
relation.joins("left join measurements on measurements.id = measurement_type.measurements_id")
或者那些依赖于你的设置的东西。
这个tutorial非常清楚地总结了它。
答案 1 :(得分:1)
MetaWhere gem支持外连接,以及其他许多优点: