我有订单,产品和订单详情联结表。我需要找到每个订单的总价格(每个订单合并的所有产品的价格)。
我需要输出订单ID,总价格由数量*价格计算。 这是我到目前为止所得到的,但一遍又一遍输出相同的ID。它需要是一个子查询,所以加入不会在这里帮助我。
Select order_id, (order_qty * p.price) as Order_Total
From order_details od, product p
Where p.product_id In
(Select od.product_id
From order_details);
答案 0 :(得分:1)
我有三个原因回答这个问题首先,应该有一个使用正确的,明确的JOIN
语法的答案。其次,答案应该在语法上是正确的。第三,可以简化查询,因为不需要orders
表
select od.order_id, sum(od.order_qty * p.price) as Order_Total
from order_details od join
product p
on od.product_id = p.product_id
group by od.order_id;
答案 1 :(得分:0)
试试这个 -
Select o.order_id, sum((od.order_qty * p.price)) as Order_Total
From orders o, order_details od, product p
Where
o.order_id = od.order_id
and od.product_id = p.product_id
group by order_id
;
输出 -
order_id Order_Total
50125 82
50126 80
50127 196
50128 178
50129 92
50130 98
答案 2 :(得分:0)
首先回答你的问题,你可以使用JOINS来减少复杂性,其中你可以使用GROUP BY加上一个SUM来简化它,这将导致像这样的查询
SELECT A.id, B.name, SUM(B.qty * C.cost) AS total FROM A JOIN B ON A.id = B.a_id JOIN C ON C.id = A.c_id GROUP BY A.id
我在电话上对不起,如果我在查询中不具体:)
作为建议,我建议您在编写产品时在订单明细中保存产品的价值。这简化了查询,并使您的销售记录保持不变,否则每次更新产品价格时都会更改