Question

Could someone let me know how to run this query with CSqlDataProvider(yii framework (php ))

SET @rank=0;
SELECT @rank:=@rank+1 AS rank, fruit, amount


FROM sales
 ORDER BY amount DESC
;

and I can do it like below , but

$sqlProvider = new CSqlDataProvider('
SELECT @rank:=@rank+1 AS rank, nameAndFam
  FROM user
');

cant initialise SET @rank=0; before above command ..

I want to rank my select and I think its the good way thanks in advance for your reply :)

Était-ce utile?

La solution

You may try to use YII createcommnd from Database Access OBject (DAO) which will provide lowest level of working with database which you can create any queries from any kinds.

$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();

after that you can use a foreach loop to loop through the object array returned from this query

you can create create separate function such as:

$cmd->select ='SELECT @rank:=@rank+1'; 

that way will make the code so much readable but since you only needed to have this work I only provided you the pure, not optimized way. Hope this may help you work it out.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top