我有两张桌子,Order
和OrderItem
。存在一对多关系Order.Order_ID=OrderItem.Order_ID
我想要一个查询返回一个列表,显示每个订单的状态,完成或未完成。
COMPLETE Order 定义为所有相关 OrderItem 记录NULL
在字段中都有一个非空值的订单OrderItem.Delivery_ID
。
这是我到目前为止所拥有的:
SELECT Order.Order_ID, 'INCOMPLETE' AS Order_status
FROM Order
WHERE EXISTS
(SELECT *
FROM OrderItem
WHERE OrderItem.Order_ID=Order.Order_ID
AND (OrderItem.Delivery_ID IS NULL OR OrderItem.Delivery_ID=''))
UNION
SELECT Order.Order_ID, 'COMPLETE' AS Order_status
FROM Order
WHERE NOT EXISTS
(SELECT *
FROM OrderItem
WHERE OrderItem.Order_ID=Order.Order_ID
AND (OrderItem.Delivery_ID IS NULL OR OrderItem.Delivery_ID=''))
ORDER BY Order_ID DESC
它可以工作,但运行速度有点慢。有没有更好的办法?
(注意,为了清楚起见,我已经重申了问题,实际的表和字段名称不同)