我有三个表:股票,订单和订单。我在Order表中有一个Total列,我希望包含每个订单的订单行总和。 Orderline表由Order_id,Stock_id和Qty组成,Stock表具有Stock_id和Price。我可以过滤与每个Order_id关联的Stock_ids并显示每个Order_id的数量,我认为我需要使用内部联接来计算每个订单的成本,方法是将每个Stock_id的价格相加并将其乘以Orderline中的数量表和Stock表中的价格,但我不知道从哪里开始。我还希望在为每个Order_id计算时将其添加到数据库中的Total列中,并且不知道如何执行此操作。我使用的是SQLite3。任何帮助将不胜感激。
订单表: order_id,order_total,order_datetime
订单表: order_id,stock_id,qty
股票表: stock_id,stock_price,stock_name
答案 0 :(得分:1)
这是一个基本查询,INNER JOIN
按订单ID分组,以按订单提供总计。您可以在WHERE
之前的GROUP BY
子句中执行您需要的任何过滤器。
SELECT
O.order_id,
SUM(S.stock_price * OL.qty) AS [Total]
FROM Order O
INNER JOIN Orderline OL
ON OL.order_id = O.order_id
INNER JOIN Stock S
ON S.stock_id = OL.stock_id
GROUP BY
O.order_id
虽然sqlite不支持计算列,但您有2个选项:
Order
表的列以存储总计的值,然后在Orderline
和Stock
表上创建触发器,以重新计算已修改记录的总计。< / LI>
INNER JOIN
表格执行Order
。