累积DQL与原则(Cumulative DQL with Doctrine)

2019-07-20 17:04发布

有一个很难制定出一个合适的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 

谢谢

Answer 1:

嘿,我有检查学说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子句 。



Answer 2:

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

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

看看这个页面学说文档中获取更多信息。



文章来源: Cumulative DQL with Doctrine