我有三张桌子:
order
orderline
(有orderID
)orderactions
(有orderID
)
然后我需要SUM(of orderline.price)
和SUM(of orderactions.price)
per orderID
。
当我使用:
SELECT order.ID, SUM(orderlines.price), SUM(orderactions.price)
FROM order
LEFT JOIN orderlines ON orderlines.orderID=order.ID
LEFT JOIN orderactions ON orderactions.orderID=order.ID
WHERE order.ID=@orderID
GROUP BY order.ID
我得到了一个结果,orderactions
这个结果相当于SUM(orderactions.price)*quantity
这个 order.ID 的 orderlines
我找到的唯一解决方案,它给了我一个正确的结果,是每个“SUM”表的子查询:
SELECT order.ID
, (SELECT SUM(orderlines.price) FROM orderlines WHERE orderlines.orderId=order.ID)
, (SELECT SUM(orderactions.price) FROM orderactions WHERE orderactions.orderId=order.ID)
FROM order
WHERE order.ID=@orderID
问题:是否有其他(更快)解决方案,因为子查询很慢,我们尽量不使用它们?