On Sun, Mar 30, 2008 at 3:51 PM, acoustic_overdrive
<[EMAIL PROTECTED]> wrote:
>
>  What's the recommended way to use aggregate functions like SUM()?
>
>  I'm building an accounting application that so far has three models:
>
>  - Client hasMany Transaction
>  - Transaction hasMany TransactionItem, belongsTo Client
>  - TransactionItem belongsTo Transaction
>
>  The total value of a Transaction (an invoice or receipt) is the sum of
>  its related TransactionItems, which each have a monetary value.
>
>  When listing transactions I also want to know the total value of each
>  and so I could do this with some SQL like this:
>
>  SELECT
>         SUM(TransactionItem.amount),
>         Transaction.title
>         FROM transaction_items AS TransactionItem
>         LEFT JOIN transactions AS Transaction
>         ON TransactionItem.transaction_id = Transaction.id
>  GROUP BY Transaction.id

Have you tried setting (SUM(TransactionItem.amount) as a field in the
fields parameter?  Also, there's a little trick where you have to pass
GROUP BY to the model via the conditions array

$conditions = array('1=1 GROUP BY Transaction.id');
$fields = array('SUM(TransactionItem.amount) as amount', 'Transaction.title'))

$results = $this->TransactionItem->find('all', compact('conditions', 'fields));

Hope that helps.

-- 
Chris Hartjes
Internet Loudmouth
Motto for 2008: "Moving from herding elephants to handling snakes..."
@TheKeyBoard: http://www.littlehart.net/atthekeyboard

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to