[英]Mysql Query select where the sum from one table is compared to the sum of rows in another table
[英]How to select from one table where difference with (sum) from another table?
我有两个表,其中包含以下字段:
...
orders.orderID
orders.orderValue
和
payments.orderID
payments.payVal
在payments.payVal
,每个订单(多对一)将有增量付款。
我需要它,因此从剩余付款的orders
中选择“所有订单” (orders.orderValue - ((sum)payments.payVal) > 0 )
。
我现在唯一能想到的就是使用orderID
的(foreach),但是由于某些特殊原因,我不能这样做。 我也不能出于某些原因在表内添加一列来保存值。
我需要的是在单个SQL查询中执行类似于此想法的整个选择: SELECT * FROM orders WHERE <... each(orderValue - (sum(payVal))) > 0 ...>
SELECT *, SUM(p.payVal) AS TotalPayed
FROM orders o
LEFT JOIN payments p ON o.orderID = p.orderID
GROUP BY o.orderID
HAVING SUM(p.payVal) < o.orderValue
这应该为您提供必要的字段,尽管我建议您在此查询中选择特定的字段。
LEFT JOIN
确保即使没有付款也能收到所有订单。
看起来我们来到了相同的解决方案,
http://sqlfiddle.com/#!2/9a657/18
SELECT * FROM `orders`
LEFT JOIN `payments` AS p ON `orders`.`orderID` = p.`orderID`
GROUP BY `orders`.`orderID`
HAVING SUM(p.`payVal`) <= 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.