如何计算Elixir中查询结果的总和?

时间:2017-01-04 08:23:59

标签: elixir phoenix-framework arithmetic-expressions

我有一个order表。该表的一列是总价。

Total price的计算方法是将order_itemitem_attribute的所有价格相加

当用户删除order_item时,我想删除所有相关的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_item相关的item_attributeorder_id总价的总和。然后将其值输入Order数据库。

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

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

如何使用Repo.aggregate/4