Postgresql 在postgres函数中需要更好的求和select语句
我的数据库中有两个表。其中一个“orders”包含一组列,其中包含一个整数,表示顺序应包含的内容(如a的5和B的15)。第二个表“production_work”包含相同的订单列和日期,因此每当有人完成订单的一部分时,我都会跟踪它 所以现在我需要一种快速的方法来知道哪些订单已经完成了,我希望避免在第一列出现一个“已完成”的表格,因为订单是可编辑的,而且更符合逻辑来保持正确 这个查询很有效,但写得很糟糕。有什么更好的方法可以做到这一点?实际上,在这个查询中有12列……我只是以其中3列为例Postgresql 在postgres函数中需要更好的求和select语句,postgresql,select,Postgresql,Select,我的数据库中有两个表。其中一个“orders”包含一组列,其中包含一个整数,表示顺序应包含的内容(如a的5和B的15)。第二个表“production_work”包含相同的订单列和日期,因此每当有人完成订单的一部分时,我都会跟踪它 所以现在我需要一种快速的方法来知道哪些订单已经完成了,我希望避免在第一列出现一个“已完成”的表格,因为订单是可编辑的,而且更符合逻辑来保持正确 这个查询很有效,但写得很糟糕。有什么更好的方法可以做到这一点?实际上,在这个查询中有12列……我只是以其中3列为例
SELECT *
FROM orders o
WHERE ud = (SELECT SUM(ud) FROM production_work WHERE order_id = o.ident)
AND dp = (SELECT SUM(dp) FROM production_work WHERE order_id = o.ident)
AND swrv = (SELECT SUM(swrv) FROM production_work WHERE order_id = o.ident)
谢谢,太好了!
select o.*
from
orders o
inner join
(
select order_id, sum(ud) as ud, sum(dp) as dp, sum(swrv) as swrv
from production_work
group by order_id
) pw on o.ident = pw.order_id
where
o.ud = pw.ud
and o.dp = pw.dp
and o.swrv = pw.swrv