Php 如何在yii中运行累积派生查询
我有一个包含3个字段(id、jobsprocess、percent)的表,我想动态计算出累计百分比,因此它是一个派生字段 在sql中,我会这样做,它返回13条记录Php 如何在yii中运行累积派生查询,php,mysql,yii,derived,cumulative-sum,Php,Mysql,Yii,Derived,Cumulative Sum,我有一个包含3个字段(id、jobsprocess、percent)的表,我想动态计算出累计百分比,因此它是一个派生字段 在sql中,我会这样做,它返回13条记录 set @x := 0; SELECT ID, jobsprocess, PERCENT, (@x := @x + PERCENT) AS cumaltive FROM `hdb`.`lookupprocess` inner join jobsprocess on jobprocess = process_id where proji
set @x := 0;
SELECT ID, jobsprocess, PERCENT, (@x := @x + PERCENT) AS cumaltive
FROM `hdb`.`lookupprocess`
inner join jobsprocess on jobprocess = process_id
where projid = 1302035
order by id
我怎样才能在yii中做到这一点?到目前为止,我有以下几点,但它并没有给我想要的结果
$lastrun = Yii::app()->db->createCommand("
SELECT ID, jobsprocess, PERCENT , (:criteria = :criteria + PERCENT) AS cumulative
FROM `hdb`.`lookupprocess`
inner join jobsprocess on jobprocess = process_id
where projid = $projid
order by id " )->queryAll(true, array(':criteria'=>0));
返回13条记录,但累计值始终为0
我也尝试了以下步骤,但我发现了一个错误
$user = Yii::app()->db->createCommand()
->select('ID, jobsprocess, PERCENT , (:zero := (:zero + PERCENT)) AS cumulative')
->from('lookupprocess')
->join('jobsprocess','jobprocess = process_id')
->where('projid = :projid', array(':projid'=>$projid,':zero'=>0))
->queryAll();
它将:零
作为字符串
CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':= ('0' + PERCENT)) AS cumulative
FROM `lookupprocess`
JOIN `jobsprocess` ON job' at line 1. The SQL statement executed was: SELECT ID, jobsprocess, PERCENT , (:zero := (:zero + PERCENT)) AS cumulative
FROM `lookupprocess`
JOIN `jobsprocess` ON jobprocess = process_id
WHERE projid = :projid
您可以在查询的FROM部分声明SQL变量:
SELECT ID, jobsprocess, PERCENT, (@x := @x + PERCENT) AS cumaltive
FROM `hdb`.`lookupprocess`, (SELECT @x=0) q
inner join jobsprocess on jobprocess = process_id
where projid = 1302035
order by id
比如说:
$lastrun = Yii::app()->db->createCommand("
SELECT ID, jobsprocess, PERCENT , (@x := @x + PERCENT) AS cumulative
FROM `hdb`.`lookupprocess`, (SELECT @x:=0) q
inner join jobsprocess on jobprocess = process_id
where projid = $projid
order by id " )->queryAll();
您可以在查询的FROM部分声明SQL变量:
SELECT ID, jobsprocess, PERCENT, (@x := @x + PERCENT) AS cumaltive
FROM `hdb`.`lookupprocess`, (SELECT @x=0) q
inner join jobsprocess on jobprocess = process_id
where projid = 1302035
order by id
比如说:
$lastrun = Yii::app()->db->createCommand("
SELECT ID, jobsprocess, PERCENT , (@x := @x + PERCENT) AS cumulative
FROM `hdb`.`lookupprocess`, (SELECT @x:=0) q
inner join jobsprocess on jobprocess = process_id
where projid = $projid
order by id " )->queryAll();