为了计算订单的总金额,我转到商品表,并计算该订单的商品总和。这是我的代码: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_orderWHERE oreder_id = '" . $order['order_id'] . "'这段代码适用于订单,我得到了很好的结果。现在我想对订单列表或所有订单执行此操作。所以我从我的请求中删除了“WHERE”。我只得到一个结果,即所有订单的总和。对于每个结果(订单),我想要其自己的文章的总和。
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
为此你需要聚合。考虑group by向查询添加一个子句,如下所示:
SELECT
o.*,
ROUND(SUM(orders_article_updated_quantity * orders_article_price * (1 - orders_article_rate/100)), 2) AS order_Total
FROM orders o
INNER JOIN orders_articles oa ON ao.orders_article_id_order = o.order_id
GROUP 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_Total
FROM orders o
- 1 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消