2014-09-17 2 views
1

많은 다른 것들을 시도했지만이 문제로 정말 고심하고 있습니다. MySQL, SQLite 및 기타 데이터베이스에 익숙하지만 Access에서이 데이터베이스를 찾아 낼 수 없습니다.시간 범위 조인에 따라 한 테이블에서 다른 테이블로 필드를 업데이트하는 방법은 무엇입니까?

table1의 타임 스탬프가 ID로 그룹화 된 table2의 타임 스탬프 범위 내에 있으면 두 개의 테이블을 기반으로합니다.

표 : 다음을 참조하십시오

ID Timestamp 
    8:00 AM 
    8:01 AM 
    8:02 AM 
    8:03 AM 
    8:04 AM 
    8:05 AM 
    8:06 AM 
    8:07 AM 
    8:08 AM 
    8:09 AM 
    8:10 AM 
    8:11 AM 
    8:12 AM 
    8:13 AM 
    8:14 AM 
    8:15 AM 
    8:16 AM 
    8:17 AM 
    8:18 AM 
    8:19 AM 

표 2 :

ID Timestamp 
1 8:00 AM 
1 8:02 AM 
1 8:04 AM 
1 8:06 AM 
2 8:10 AM 
2 8:12 AM 
2 8:14 AM 
2 8:16 AM 

을 내가 표에 발생하는 것이 :

여기
ID Timestamp 
1 8:00 AM 
1 8:01 AM 
1 8:02 AM 
1 8:03 AM 
1 8:04 AM 
1 8:05 AM 
1 8:06 AM 
    8:07 AM 
    8:08 AM 
    8:09 AM 
2 8:10 AM 
2 8:11 AM 
2 8:12 AM 
2 8:13 AM 
2 8:14 AM 
2 8:15 AM 
    8:16 AM 
    8:17 AM 
    8:18 AM 
    8:19 AM 

내가 처음 시도 것입니다 (그리고 소원 작동 할 것이지만) 다른 쿼리를 반복하지 않고 어디서나 많은 반복을 거쳤습니다.

UPDATE Table1 
    SET Table1.ID = Table2.ID 
    WHERE Table1.Timestamp IN (SELECT Table2.Timestamp GROUP BY Table2.ID); 

내가 하나가 더 출력을 얻을 (Table1.ID가 비어) 또는 I 오류 "작업 업데이트 가능한 쿼리를 사용해야합니다"얻는다.

+0

태그는 제목이 아닌 * 태그 * 섹션에 속합니다. –

+0

** WHERE ... IN ... ** 기준 대신 * 테이블 조인을 시도해 보셨습니까? –

+0

안녕하세요 피터, 태그로 "액세스"를 추가하지 못했습니다. 따라서 평판이 충분하지 않아서 왜 제목에 포함되어 있었습니까? 어떻게 그들과 합류 할 것이 없으므로 나는 그들과 합류 할 수 있습니까? 나중에 ID를 기반으로 가입 할 수 있지만 지금은 타임 스탬프가 두 번째 테이블의 ID로 그룹화 된 타임 스탬프 범위 내에있는 경우 ID 열을 먼저 채워야합니다. 감사! – nellywilson

답변

1

임시 테이블을 만들어 임시 레코드 집합으로 사용하여 레코드를 검색해야합니다. 그 이유는 업데이트 쿼리에서 사용할 수없는 집계 쿼리를 필요로하는 ID 당 최소/최대 타임 스탬프가 필요하기 때문입니다.

SELECT Table2.ID, 
Min(Table2.TS) AS MinOfTS, 
Max(Table2.TS) AS MaxOfTS 
INTO try  '<- this is your temporary table. 
FROM Table2 
GROUP BY Table2.ID; 

이제 우리는 우리가 우리의 임시 테이블에 함께 검색하는 데 사용할 수있는 값을 가지고, 우리는 단지 참조 할 수 있습니다 우리의 UPDATE 문에 그.

UPDATE Table1, try SET Table1.ID = [try].[ID] 
WHERE (((Table1.TS) Between [try].[minofts] And [try].[maxofts])); 

편집 : 난 당신이 DLookup를 사용할 수도있을 것 같군요 -하지만 그들은이 방법에 비해 매우 느린 실행하는 경향이있다.

+0

감사합니다. 이것은 우수하고 간결하며 설명적인 대답입니다. Access에서 Group By를 사용할 수 없다는 생각이 들었습니다. 귀하의 답변은 완벽하게 작동합니다! 바라건대 나 같은 가난한 영혼이 언젠가이 모든 것을 만나서 내가했던 것보다 훨씬 빨리 끝낼 수 있기를 바랍니다. 다시 한 번 감사드립니다! – nellywilson

+0

@nellywilson 문제 없습니다. 엑세스 SQL은 경험이 없다면 일부 사람들에게는 매우 외국 적이 될 수 있습니다. 다행이 당신을 위해 일했습니다. –

관련 문제