使用另一个而非JOINed表的列计数更新MS Access字段

时间:2017-08-09 13:19:00

标签: sql ms-access join insert-update

我尝试做的是在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;

这应该使用临时表的当前行计数更新 statisticsTable 01/01/2017 itemCount 字段。< / p>

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

是否可以使用在另一个表上计算的查询输出更新表的字段值,而不加入MS Access中的两个表?

编辑1:

经过进一步研究,函数DCount()可能能够提供我正在寻找的结果,我会测试它。

1 个答案:

答案 0 :(得分:0)

编辑:我写了一个更复杂的答案,甚至可能在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