2017-08-09 2 views
1

私がやっているのは、実際のデータテーブルとは別のテーブルのMS Access 2013で更新クエリを作成することです()。データテーブルと統計テーブル間の接続)を使用して、後で計算して後で使用するために保存する必要がある統計情報(レコードの数など)を保存します。MS AccessのフィールドをJOINされたテーブルではなく別のカラムの数で更新する

私はここ数日間、このチュートリアルの一冊を見てきました。私の問題の解決策を見つけることはできません。テーブルに参加するすべてのソリューションは、私の場合は無関係です。計算されるテーブルは常に変化するデータを持つ一時的なテーブルなので、私はいつもすべてのレコードを数えたいと思っています。

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個フィールドを更新する必要があります/ 2017statisticsTableで、テンポラリテーブルの現在の行数を使用します。

これは標準ではないかもしれませんが、一般的にはMS AccessやDBMSを正しく使用していることがわかりますが、割り当てが限られているため、テーブル構造、接続またはデータベース構造全体では、上記のように機能する更新クエリを作成するだけです。

MS Accessの2つのテーブルを結合せずに、別のテーブルで計算したクエリの出力でテーブルのフィールド値を更新することはできますか?

EDIT 1:さらなる研究の後

、機能DCount()は、私はそれをテストします、私が探している結果を与えることができるかもしれません。

答えて

0

EDIT:私は、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 
関連する問題