我有三个表:Stock、Orderline 和 Order。我在 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, 数量
库存表:
stock_id、stock_price、stock_name
最佳答案
这是一个带有 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
表以重新计算修改记录的总数。 INNER JOIN
从创建的 View 到您的Order
每当您需要总数时都可以使用表格。 关于3表内连接的SQL计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41560112/