Накопительный DQL с доктриной - PullRequest
2 голосов
/ 03 октября 2009

Мне трудно отработать правильный DQL для генерации накопленной суммы. Я могу сделать это простым SQL, но когда дело доходит до DQL, я не могу его достать.

Вот как это выглядит в SQL:

</p> <pre><code> 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

Спасибо

Ответы [ 2 ]

3 голосов
/ 09 декабря 2009

Эй, я проверил документацию по 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();

Прочитайте остальную часть документации по Группировка по пунктам .

2 голосов
/ 02 декабря 2009

Вы просто указываете сумму в выбранной вами части DQL:

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

Проверьте эту страницу в документации Doctrine для получения дополнительной информации.

...