# Calculations & joins

**URL:** <https://www.ruby-forum.com/t/calculations-joins/83912>\
**Category:** Rails\
**Created:** [January 30, 2007, 6:57pm UTC](https://www.ruby-forum.com/t/calculations-joins/83912 "2007-01-30T18:57:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Scara\_Maccai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/848f3c/32.png) [@Scara\_Maccai](https://www.ruby-forum.com/u/Scara_Maccai)\
**Post date:** [January 30, 2007, 6:57pm UTC](https://www.ruby-forum.com/t/calculations-joins/83912/1 "2007-01-30T18:57:31Z")

</div>

I want to have a sum of an order by doing something like:

select sum(items.price) from order, items where order.item\_id =  
items.id

Since Order and Item class are related (using “belongs\_to”), I thought  
I could use:

Order.sum(‘items.price’)

But that doesn’t work as expected… I have to use:

Order.sum(‘items.price’, :joins =\> ‘left outer join items on  
items.id=item\_id’)

Isn’t ActiveRecord::Calculations supposed to know that I’m asking for  
a join? Why am I supposed to write it?

---

<div class="post-metadata">

**Author:** ![Scara\_Maccai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/848f3c/32.png) [@Scara\_Maccai](https://www.ruby-forum.com/u/Scara_Maccai)\
**Post date:** [January 30, 2007, 7:11pm UTC](https://www.ruby-forum.com/t/calculations-joins/83912/2 "2007-01-30T19:11:32Z")

</div>

> Isn’t ActiveRecord::Calculations supposed to know that I’m asking for  
> a join? Why am I supposed to write it?  
> sum() wont automatically make the joins for you - it only pulls that  
> data when it’s needed.

If you want a sum of all item prices, you do:  
Item.sum(‘price’)

If you want a sum of the prices of items within a specific order, you  
do:  
order = Order.find(1234)  
order.items.sum(‘price’)

You should also be able to do:  
Order.sum(‘items.price’, :include =\> ‘items’)

Hope that helps,

Steve

---

<div class="post-metadata">

**Author:** ![Scara\_Maccai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/848f3c/32.png) [@Scara\_Maccai](https://www.ruby-forum.com/u/Scara_Maccai)\
**Post date:** [September 25, 2007, 11:10pm UTC](https://www.ruby-forum.com/t/calculations-joins/83912/3 "2007-09-25T23:10:50Z")

</div>

> You should also be able to do:  
> Order.sum(‘items.price’, :include =\> ‘items’)

That’s the stuff! Great! Thank you!  
But “include” it’s not described in the docs for “calculate”, only for  
“count”! I think it should be added to the docs…

[http://api.rubyonrails.org/classes/ActiveRecord/Calculations/](http://api.rubyonrails.org/classes/ActiveRecord/Calculations/)  
ClassMethods.html#M000953
