首页 文章

3表内连接的SQL计算

提问于
浏览
1

我有三个表:股票,订单和订单 . 我在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

1 回答

  • 1

    这是一个基本查询, INNER JOIN 按订单ID分组,为您提供订单总额 . 您可以在 GROUP BY 之前的 WHERE 子句中执行您需要的任何过滤器 .

    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 表的列以存储总计的值,然后在 OrderlineStock 表上创建触发器以重新计算已修改记录的总计 .

    • 将上面的查询转换为单独的视图,然后在需要总计时从创建的视图到 Order 表执行 INNER JOIN .

相关问题