使用CActiveRecord获得列的总和
问题描述:
1)有没有办法在Yii中使用CActiveRecord获取整数列的总和?使用CActiveRecord获得列的总和
否则,我将不得不获取列数据并在服务器端进行汇总。
2)我还假设通过一个sql查询获取总和比获取数据列并在服务器上使用php进行总结要快。如果性能很重要,那么mysql服务器是否应该去做这样的操作,或者让php服务器来处理这个问题。
请提供建议。
答
1)我不这么认为,除非你想有一个STAT关系,否则用这种方式使用CAvtiveRecord并没有什么意义。假设你有一个“问题”模型和一个“答案”模型,答案属于一个问题。你可以做一个统计关系,在“问题”实现这样的:
Public function relations() {
return array(
'answerSum'=>array(self::STAT, 'Answer', 'questionId', 'select' => 'SUM(answerSum.someFieldFromAnswerTableToSum)')
);
}
然后您检索信息:$ question-> answerSum; $ question是上面声明的关系的一个问题实例。
2)这是数据量的问题。我个人会选择SQL,因为它能够处理大量的数据集,从而可以保存未来。
答
试试吧
$user = User::model()->findBySql('select sum(`you_column`) as `sum` from user', array());
var_dump($user->sum);
在模式应该是当前场内总和
也许这个问题应该是如何为列的DB总和查询,而不是。 – Alocus 2011-04-22 02:47:00
'$ sum = Yii :: app() - > db-> createCommand(“SELECT SUM('theColumnOfData')as'sum'FROM'theTableOfData'”) - > queryScalar();' – Alocus 2011-04-22 02:48:23