我有以下查询,它检查OrderDetail表中的状态,并检查StatusFK中的所有项目= 2,只有当所有相关项目都具有状态2时,我才想运行更新查询来更新Order表的状态为2。
我对波纹管代码的问题是它只有只读,因此我无法将其链接到更新查询。
任何帮助都会很棒!
SELECT tblOrder.OrderPK
FROM tblOrder INNER JOIN tblOrderDetail ON tblOrder.OrderPK = tblOrderDetail.OrderFK
GROUP BY tblOrder.OrderPK
HAVING Count(tblOrderDetail.OrderFK ) = SUM(IiF (tblOrderDetail.StatusFK = 2 ,1,0) );
答案 0 :(得分:1)
为什么不使用WHERE NOT EXISTS
子句:
SELECT tblOrder.OrderPK
FROM tblOrder
WHERE NOT EXISTS (
SELECT 1
FROM tblOrderDetail
WHERE tblOrderDetail.OrderFK = tblOrder.OrderPK
AND tblOrderDetail.StatusFK <> 2
)
此查询将选择tblOrder
中没有任何非状态2子行的所有行。
答案 1 :(得分:0)
使用Extra WHERE子句完成SQL!一切都在享受!
UPDATE tblOrder SET tblOrder.Statusfk = 2
WHERE tblOrder.Statusfk<>2 AND NOT EXISTS (
SELECT 1
FROM tblOrderDetail
WHERE tblOrderDetail.OrderFK = tblOrder.OrderPK AND
tblOrderDetail.StatusFK <> 2 );