MS Access SQL查询帮助从只读更改

时间:2014-06-16 09:36:40

标签: sql ms-access

我有以下查询,它检查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) );

2 个答案:

答案 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  );