現有sales_order表(訂單表)
id,name.....
------------------------------------------------------------------------
sales_order_line表(訂單明細表,其中ref_sales_order_id與sales_order的id對應)
id, 訂單id, 物品數量
id, ref_sales_order_id, quantity
------------------------------------------------------------------------
package(包裹表,其中ref_target_id與sales_order_line表的id對應)
id, 訂單明細id
id, ref_target_id.....
------------------------------------------------------------------------
包裹的數量等于訂單明細表的quantity則代表該訂單明細已完成
所有訂單明細已完成則代表訂單完成
現要查出所有已完成的訂單,求大神解答應該怎么寫,用的是pgsql
uj5u.com熱心網友回復:
-- pgSql 不了解 , 這是SqlService的
Select A.* From sales_order A
Inner Join sales_order_line B On A.id = B.ref_sales_order_id
Inner Join package C On B.Id = C.ref_target_id And B.quantity = C.quantity
uj5u.com熱心網友回復:
最后好像不太對,package表里沒有quantity欄位,要根據sales_order_line的id去package表統計數量,我再看看怎么寫,感謝大神uj5u.com熱心網友回復:
SELECT *
FROM sales_order A
WHERE NOT EXISTS
(SELECT 1
FROM sales_order_line B
LEFT JOIN
(SELECT ref_target_id,COUNT(*) AS QTY
FROM package
GROUP BY ref_target_id) AS C ON B.ID=C.ref_target_id
WHERE (B.QUANTITY<>C.QTY OR ISNULL(ref_target_id,'')='') AND A.ID=B.ref_sales_order_id)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26199.html
標籤:疑難問題
