Cumulative DQL with Doctrine

2020-03-30 02:50发布

Im having a hard time working out a proper DQL to generate cumulative sum. I can do it in plain SQL but when it comes to DQL i cant get hold of it.

Here is how it looks in SQL:

    SELECT s.name, p.date_short, p.nettobuy,
    (select sum(pp.nettobuy) as sum from price pp where pp.stock_id = p.stock_id and p.broker_id = pp.broker_id and pp.date_short <= p.date_short) as cumulative_sum
FROM price p
    left join stock s on p.stock_id = s.id
    group by p.stock_id, p.date_short
    order by p.stock_id, p.date_short

Thanks

2条回答
该账号已被封号
2楼-- · 2020-03-30 03:29

Hey, I have check the documentation for Doctrine 1.2, and the way to create the query is (put attention on the alias):

$query = Doctrine_Query::create();
$query->addSelect('AVG(price) as price');
$query->addSelect('AVG(cost) as cost');
// as many addSelect() as you need
$query->from('my_table');

To output the SQL query created:

echo $query->getSqlQuery();

To execute the statement:

$product = $query->fetchOne();

And to access the retrieved data is:

echo $product->getPrice();
echo $product->getCost();

Read the rest of the documentation at Group By Clauses.

查看更多
太酷不给撩
3楼-- · 2020-03-30 03:38

You just specify the sum in your select part of the DQL:

$query = Doctrine_Query::create()
   ->select('sum(amount)')
   ->from('some_table');

Check out this page in the Doctrine documentation for more info.

查看更多
登录 后发表回答