使用包含 SUM() 字段的子查询在 MS-Access 中编辑查询

Posted

技术标签:

【中文标题】使用包含 SUM() 字段的子查询在 MS-Access 中编辑查询【英文标题】:Edit query in MS-Access with a subquery containg a SUM() field 【发布时间】:2010-01-20 13:16:30 【问题描述】:

当我在 Access 中打开此查询(它只是 2 个链接表的集合)时,我可以毫无问题地编辑数据。


SELECT O.*, PP.skuapexid
FROM tblSkuBestellingen AS O
INNER JOIN tblSkuApex AS PP
ON (PP.begindatum <= O.besteldatum) AND (PP.sku = O.sku)
WHERE NOT EXISTS
   (
      SELECT * FROM tblSkuApex PP2
      WHERE PP2.sku = PP.sku AND
      PP2.begindatum <= O.besteldatum AND
      PP2.begindatum > PP.begindatum
   );

但是,当我添加一个小字段来显示已交付产品的总数时,它突然不允许我再编辑它了。有没有办法解决这个问题?


SELECT O.*, PP.skuapexid,
   (
        SELECT Sum(Nz(tblLeveringProduct.geleverd,0)) AS TotaalGeleverd
        FROM tblSkuBestellingen LEFT JOIN tblLeveringProduct ON tblSkuBestellingen.SkuBestelId=tblLeveringProduct.SkuBestelId
        WHERE  tblSkuBestellingen.sku = PP.sku
    ) AS TotaalGeleverd
FROM tblSkuBestellingen AS O
INNER JOIN tblSkuApex AS PP
ON (PP.begindatum <= O.besteldatum) AND (PP.sku = O.sku)
WHERE NOT EXISTS
   (
      SELECT * FROM tblSkuApex PP2
      WHERE PP2.sku = PP.sku AND
      PP2.begindatum <= O.besteldatum AND
      PP2.begindatum > PP.begindatum
   );

【问题讨论】:

【参考方案1】:

如果查询或任何连接查询中有任何聚合(Grouy by、Sum、Count、...),则您无法编辑数据。

你可以写一个函数来计算表中每一行的总和。

【讨论】:

啊哈,我已经尝试以我正在使用的连续形式放置一个函数。很遗憾,以这种方式获取结果有点滞后,但是哦。 令我惊讶的是,对 SELECT 语句的单个列使用聚合 SELECT 会使其他字段无法更新。我自己也不会想到的。您是否尝试过 DISTINCTROW 谓词?我怀疑它会有所帮助,但它在其他一些情况下也有效,所以值得一试。

以上是关于使用包含 SUM() 字段的子查询在 MS-Access 中编辑查询的主要内容,如果未能解决你的问题,请参考以下文章

symfony 中的子查询

如何在 MySQL 的子查询中指定父查询字段?

使用不同 WHERE 子句获取聚合的子查询

检查约束内的子查询

基于查询的子表单中的字段的 Access 2007 验证帮助

如何使用包含子字符串的字段过滤文档