使用CActiveRecord获取列的总和

时间:2011-04-21 06:26:39

标签: php mysql performance yii

1)有没有办法在Yii中使用CActiveRecord获取整数列的总和?

否则我将得到列数据并在服务器端总结。

2)我还假设通过一个SQL查询获得总和比获取数据列更快,并在服务器上用PHP总结。如果性能很重要,那么mysql服务器是否应该费心去做这样的操作,或者让php服务器来处理这个问题。

请提出建议。

2 个答案:

答案 0 :(得分:10)

1)我不这么认为,除非你想拥有一个STAT关系,否则以这种方式使用CAvtiveRecord并没有多大意义。假设你有一个“问题”模型和一个“答案”模型,答案属于一个问题。您可以建立统计关系并在“问题”中实现它:

Public function relations() {
    return array(
        'answerSum'=>array(self::STAT, 'Answer', 'questionId', 'select' => 'SUM(answerSum.someFieldFromAnswerTableToSum)')
    );
}

然后您检索信息:$ question-> answerSum;其中$ question是一个Question的实例,其关系声明如上。

2)这是数据量的问题。我个人会选择SQL,因为它能够处理更大量的数据集,从而可以保存未来。

答案 1 :(得分:6)

试试吧

$user = User::model()->findBySql('select sum(`you_column`) as `sum` from user', array());
var_dump($user->sum);

在模型中应该存在字段和