2017-01-04 39 views
0

我有一个order表。这张表的其中一列是总价。如何计算Elixir中查询结果的总和?

Total price是当用户删除的order_item加起来和order_item所有价格item_attribute

计算,我希望把它删除所有相关item_attributeorder_item。因此,在计算总价格时,应扣除order_itemitem_attribute的价格。

所以这样做,我做了这样的代码下面

order_item_total = Repo.one!(from p in Pos8.OrderItem, where: p.order_id == ^order_id, select: sum(p.item_total)) 
total_item_attributes_price = Repo.one!(from p in Pos8.ItemAttribute, where: p.order_id == ^order_id, select: sum(p.price)) 

order_total_query = (order_item_total + total_item_attributes_price) 

Pos8.Order.changeset(order, %{total: order_total_query}) 
|> Repo.insert_or_update 

删除order_itemitem_attribute之后,它选择的order_itemitem_attribute总价,这都与order_id的总和。然后将其值输入到订单数据库。

但是,它触发了(ArithmeticError) bad argument in arithmetic expression。这表明order_total_query = (order_item_total + total_item_attributes_price)在算术表达式中不是有效参数...

如何计算order_total_query的正确算术表达式?

在此先感谢。

+0

打印'order_item_total'和'total_item_attributes_price'的值将帮助您 –

回答