有人能告诉我如何用CSqlDataProvider(yii (php ))运行这个查询吗?
SET @rank=0;
SELECT @rank:=@rank+1 AS rank, fruit, amount
FROM sales
ORDER BY amount DESC
;我可以像下面这样做,但是
$sqlProvider = new CSqlDataProvider('
SELECT @rank:=@rank+1 AS rank, nameAndFam
FROM user
');不能在上述命令之前初始化SET @rank=0;。
我想排名我的选择,我认为这是一个好办法,预先感谢您的答复:)
发布于 2013-12-08 12:07:12
您可以尝试使用YII创建OBject (DAO)中的createcommnd,这将提供最低级别的数据库操作,您可以创建任何类型的查询。
$sql1 = 'SET @rank=0;';
$sql2 = 'SELECT @rank:=@rank+1 AS rank, fruit, amount
FROM sales
ORDER BY amount DESC';
$cmd1 = Yii::app()->db->createCommand($sql1);
$cmd2 = Yii::app()->db->createCommand($sql2);
$cmd1->execute();
$result = $cmd2->query();之后,可以使用foreach循环遍历从此查询返回的对象数组。
您可以创建单独的函数,如:
$cmd->select ='SELECT @rank:=@rank+1'; 这样可以使代码更加可读性,但是由于您只需要完成这项工作,我只提供给您纯的,而不是优化的方法。希望这能帮你解决这个问题。
https://stackoverflow.com/questions/20443865
复制相似问题