2012-12-21 2 views
2

공용 키가 MatCode 인 Access 데이터베이스에 두 개의 테이블 (MatMast 및 ChangeLog)이 있습니다. 표는 다음과 같다 :다른 테이블의 값 필드가있는 테이블을 업데이트하지만 타임 스탬프에 따라 초에서 고유 한 값을 선택하십시오.

MatMast

MatCode (PK),이 currentStatus

10001, ACTIVE

10002, INACTIVE

10003, ACTIVE

변경점

ChangeInstance (PK), MatCode, 상태 소인

25,452, 10,001, ACTIVE, INACTIVE 19 ~ 12 2012 오전 11시 21분

25,678, 10,001, 20 ~ 12 2012 6시 45분 MatMast를 업데이트 (이것에 대한 :(VBA를 사용할 수 없습니다) 오후

20296, 10002, ACTIVE, 20 12 월 2012 03:52 PM

내 작업이 이제 Access에서 SQL 쿼리를 작성하는 것입니다 이 테이블을

MatMast는

MatCode (PK),이 currentStatus

10001, INACTIVE < ==가 10001

10002에 대한 최신 ChangeInstance 25678을 따기, ACTIVE ( 업데이트 쿼리를 제안) < == ChangeInstance 20296을 가져 오는 중 10002에만 해당

10003, ACTIVE < 변경 로그에는이 레코드가 없으므로 변경되지 않음

다양한 접근 방식을 시도했습니다. 그러나이 작업을 수행 할 업데이트 쿼리를 작성할 수 없습니다. 제발, 제발 도와주세요!

Regds, SKB

답변

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 
+0

Remou을, 안녕하세요! 더 말할 것도없고 ... THAAAAANK YOU !!!! – SKBPillai

+0

그런데 어떻게이 일을 빨리 처리 했습니까? – SKBPillai

+0

죄송 합니다만, 충분한 답변을 얻지 못했기 때문에이 답변을 투표 할 수 없었습니다. ( – SKBPillai

관련 문제