私は2つのテーブルを持っていOrder
ますOrderItem
. には 1 対多の関係があります。Order.Order_ID=OrderItem.Order_ID
各注文のステータス、COMPLETE または INCOMPLETE を示すリストを返すクエリが必要です。
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
動作しますが、動作が少し遅くなります。より良い方法はありますか?
(注意: わかりやすくするために問題を再度述べました。実際のテーブル名とフィールド名は異なります)