对 MySQL 搜索的每个结果执行计算

为了计算订单的总金额,我转到商品表,并计算该订单的商品总和。


这是我的代码:


SELECT orders.*,

  ROUND(SUM(`orders_article_updated_quantity` * (`orders_article_price` * (100 - orders_article_rate)/100)), 2) AS 'order_Total'

FROM orders JOIN orders_articles

  ON orders.order_id = orders_articles.orders_article_id_order

WHERE oreder_id = '" . $order['order_id'] . "'

这段代码适用于订单,我得到了很好的结果。


现在我想对订单列表或所有订单执行此操作。所以我从我的请求中删除了“WHERE”。我只得到一个结果,即所有订单的总和。


对于每个结果(订单),我想要其自己的文章的总和。


蛊毒传说
浏览 129回答 1
1回答

拉丁的传说

为此你需要聚合。考虑group by向查询添加一个子句,如下所示:SELECT     o.*,     ROUND(SUM(orders_article_updated_quantity * orders_article_price * (1 - orders_article_rate/100)), 2) AS order_TotalFROM orders oINNER JOIN orders_articles oa ON ao.orders_article_id_order = o.order_idGROUP BY o.order_id请注意,您应该在查询中的每一列前面加上它们所属的表的前缀 - 中的列的情况并非如此,SUM()这会产生歧义。另一个选项是相关子查询(这允许orders没有任何文章):SELECT     o.*,     (        SELECT ROUND(SUM(orders_article_updated_quantity * orders_article_price * (1 - orders_article_rate/100)), 2)         FROM orders_articles oa         WHERE ao.orders_article_id_order = o.order_id    ) AS order_TotalFROM orders o
打开App,查看更多内容
随时随地看视频慕课网APP