Rails update_all使用连接和求和

时间:2011-06-08 01:53:14

标签: sql ruby-on-rails join sum sql-update

这里的第一个问题。我有两个轨道模型,一个是“Quiniela”(预测表),另一个是实际的“预测”。 Quiniela有许多预测和预测属于quinielas。预测具有称为“点”的属性,当添加真实游戏结果系统时,该属性会更新。我想更新所有具有属性“qpoints”的Quinielas及其预测点的总和。这就是我现在所拥有的,我担心它可能很简单,但我在SQL语句中的背景很差。

基本思想是更新所有quinielas以显示从其预测中获得的所有点的总和。现在我收到一个无效的分组语句或一个列不存在。感谢。

Quiniela.joins(:predictions).
         select('SUM(predictions.points) AS totalpts, quinielas.qpoints AS points').
         update_all('points = totalpts')

1 个答案:

答案 0 :(得分:1)

我已经弄清楚了:

Quiniela.update_all('qpoints = (SELECT SUM(predictions.points) 
                                FROM Predictions 
                                WHERE Quinielas.id = Predictions.quiniela_id)')

this过去的问题

中找到了帮助