2009-10-03 5 views
2

Мне трудно найти правильный DQL для генерации суммарной суммы. Я могу сделать это в простом SQL, но когда дело доходит до DQL, я не могу его схватить.Накопительный 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 

Благодаря

ответ

2

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

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

ЗАКАНЧИВАТЬ this page в документацию Doctrine для получения дополнительной информации.

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.

+0

Спасибо, спасли мне жизнь. – PurplePilot