2

我很难制定出适当的 DQL 来生成累积总和。我可以用普通的 SQL 来做,但是当涉及到 DQL 时,我无法掌握它。

下面是它在 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

谢谢

4

2 回答 2

3

嘿,我检查了 Doctrine 1.2 的文档,创建查询的方法是(注意别名):

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

要输出创建的 SQL 查询:

echo $query->getSqlQuery();

执行语句:

$product = $query->fetchOne();

访问检索到的数据是:

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

阅读Group By Clauses中的其余文档。

于 2009-12-09T05:14:30.210 回答
2

您只需在 DQL 的选择部分中指定总和:

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

查看Doctrine 文档中的此页面以获取更多信息。

于 2009-12-02T06:34:28.427 回答