2

Accessデータベースに2つのテーブル(MatMastとChangeLog)があり、共通のキーはMatCodeです。テーブルは次のようになります。

MatMast

MatCode(PK)、CurrentStatus

10001、アクティブ

10002、非アクティブ

10003、アクティブ

ChangeLog

ChangeInstance(PK)、MatCode、Status、TimeStamp

25452、10001、アクティブ、2012年12月19日11:21 AM

25678、10001、非アクティブ、2012年12月20日06:45 PM

20296、10002、アクティブ、2012年12月20日03:52 PM

私の仕事は、AccessでSQLクエリを作成することです(これにはVBA :(を使用できません)。これにより、MatMastテーブルが次のように更新されます。

MatMast(提案された更新クエリの後)

MatCode(PK)、CurrentStatus

10001、INACTIVE<==10001の最新のChangeInstance25678を取得しています

10002、ACTIVE <== ChangeInstance 20296を取得します。これは、10002の唯一の記録です。

10003、ACTIVE <==変更されていません。これは、ChangeLogにレコードがないためです。

さまざまなアプローチを試みました。しかし、これを行うための更新クエリを作成することはできません。助けてください!

Regds、SKB

4

1 に答える 1

0

あなたは割り当てについて言及しているので、更新が必要だと思います。

UPDATE matmast
       INNER JOIN (SELECT c.changeinstance,
                          c.matcode,
                          c.status,
                          c.TIMESTAMP
                   FROM   changelog c
                   WHERE  (( ( c.changeinstance ) IN
                             (SELECT TOP 1 changeinstance
                              FROM   changelog q
                              WHERE  q.matcode = c.matcode
                              ORDER  BY TIMESTAMP DESC,
                                        changeinstance) ))) x
               ON matmast.matcode = x.matcode
SET    matmast.currentstatus = x.status 
于 2012-12-21T18:51:17.510 に答える