gpt4 book ai didi

mysql - 如何在 yii 中获取 mysql 中的列总和

转载 作者:行者123 更新时间:2023-11-29 10:51:34 28 4
gpt4 key购买 nike

我有以下代码,我想要列金额的总和。我正在使用关系函数连接两个表 bd_master 和 bd_details。没有显示错误,但唯一选定的总金额字段不存在。

*$subQuery = BdMaster::model()->find(array('select'=>'id','condition'=>'is_default=1'));
$bDetails = BdMaster::model()->findAll(array(
'condition' => "t.id in ($subQuery->id) and bd_details.period <=LAST_DAY('2016-01-01') and bd_details.period >LAST_DAY('2016-01-01' - INTERVAL 1 MONTH)",
'with'=>array('bd_details'),
'select'=> 'SUM(bd_details.amount) as sm',
));*

最佳答案

问题是,函数 findAll() 返回模型类。如果你想从数据库中获取总和,你应该 build the query (不含模型)。

不同之处在于查询生成器有另一种语法。使用上面的链接获取确切的文档。您想要构建的查询可能如下所示:

$subQuery = BdMaster::model()->find(array('select'=>'id','condition'=>'is_default=1'));
$sum = Yii::app()->db->createCommand()
->select('SUM(bd_details.amount) as sm')
->from('bdMaster t')
->join('bd_details', 't.id=bd_details.bdMaster_id') // here the correct join condition
->where("t.id in ($subQuery->id) and bd_details.period <=LAST_DAY('2016-01-01') and bd_details.period >LAST_DAY('2016-01-01' - INTERVAL 1 MONTH)")
->queryScalar();

您应该调整连接条件,然后查询应该可以正常工作。

queryScalar() 将返回数字,因此您将获得该列的总和。

另一种可能性是使用 SQL 构建查询(实际上我更喜欢它而不是使用查询构建器构建)。如果您的 SQL 已经可以为您提供正确的结果,只需将其放入变量中,如下所示:

$sql = "your SQL here";
$sum = Yii::app()->db->createCommand($sql)->queryScalar();

那么你也会得到正确的结果。我希望它能帮助您解决问题。如果您还有任何疑问,请随时提问。

关于mysql - 如何在 yii 中获取 mysql 中的列总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43648763/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com