【问题标题】:Update a MS Access field with the column count of another, not JOINed table使用另一个未加入表的列计数更新 MS Access 字段
【发布时间】:2018-01-17 09:55:14
【问题描述】:

我要做的是在 MS Access 2013 中为与实际数据表分开的表创建一个更新查询(意味着数据表和统计表之间没有连接 ) 来存储一些需要存储以供进一步计算和以后使用的统计信息(例如记录计数)。

在过去的几天里,我查阅了很多关于此的教程,但没有找到解决问题的方法,因为所有解决方案都包括加入表格,在我的情况下,这无关紧要,因为要计算的表是临时的,数据不断变化,因此我总是想在给定日期(如日志记录)计算每条记录,找到整个临时表中的最大值等。

statisticsTable的结构:

| statDate (Date/time) | itemCount (integer) | ... |
----------------------------------------------------
|           01/01/2017 |                  50 | ... |
|           02/01/2017 |                  47 | ... |
|           03/01/2017 |                  43 | ... |
|                  ... |                 ... | ... |           

我想要做的,半乱码:

UPDATE statisticsTable
SET itemCount = (SELECT Count(*) FROM tempTable)
WHERE statDate = 01/01/2017;

这应该使用临时表的当前行数更新 statisticsTable01/01/2017itemCount 字段。

我知道这可能不是 MS Access 或任何一般 DBMS 的标准或正确使用,但是,我的任务相当有限,这意味着我不能(不应该)修改任何表结构、连接或一般的数据库结构,只创建如上所述工作的更新查询。

是否可以使用在另一个表上计算的查询输出来更新表的字段值,而无需在 MS Access 中连接这两个表?

编辑 1:

经过进一步研究,函数DCount()或许能给出我想要的结果,我会测试一下。

【问题讨论】:

    标签: sql ms-access join insert-update


    【解决方案1】:

    编辑:我写了一个更复杂的答案,它甚至可能在 Access 中无法使用(它可以在 MS SQL-Server 中使用)。无论如何。

    您需要的是一个始终正确的连接标准,您的更新将以此为基础。你可以使用is not null:

    SELECT s.*, a.itemCount 
    FROM statisticsTable as s
    INNER JOIN 
        (
        SELECT count(*) as itemCount
        from tempTable
        ) as a
    on s.[some field that is always populated] is not null
        and a.itemCount is not null
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 2020-05-19
      相关资源
      最近更新 更多