2017-08-09 95 views
1

我想要做的是在MS Access 2013中創建一個更新查詢,用於與實際數據表分開的表(意味着沒有數據表與統計表之間的連接)以存儲需要存儲的一些統計數據(例如記錄計數)以供進一步計算和稍後使用。更新一個MS Access字段的列數爲另一個,而不是JOINed表

在過去的幾天裏,我查閱了一大堆教程,沒有找到我的問題的解決方案,因爲所有的解決方案都包含了連接表,這在我的情況中是無關緊要的,因爲要計算的表是臨時的,並且不斷變化的數據,因此我總是希望計算每個記錄,在給定日期(例如日誌記錄)中找到整個臨時表中的最大值等。

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; 

這應該更新的01/01的ITEMCOUNT場/ 2017statistics表與臨時表的當前行數。

我知道這可能不是標準或正常使用MS Access或任何DBMS的一般情況,但是,我的任務相當有限,這意味着我不能(不應該)修改任何表結構,連接或通常的數據庫結構,只能創建如上所述的更新查詢。

是否有可能更新表的字段值與在另一個表上計算查詢的輸出,而不加入MS Access中的兩個表?

編輯1:

經過進一步研究,功能DCount()也許能夠給我找的結果,我會測試它。

回答

0

編輯:我寫了一個更復雜的答案,甚至沒有在Access中工作(它可以在MS SQL服務器中工作)。無論如何。

您需要的是一個始終如一的加入標準,以此爲基礎進行更新。您可以使用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 
相關問題