2012-11-08 4 views
0

에 의해 자식 레코드를 주문 :업데이트 표가 나는 두 개의 테이블이 날짜

부모 (이메일, 이름, ETC)
아동을 (이메일, DOC_DOC_ID, DOWNLOAD_DATE, RANK)

나는 쿼리를 생성해야 즉, 다운로드 한 날짜에 의해 각각 별개의 DOC_ID을 평가하는 숫자 정렬로 CHILD.RANK 필드를 업데이트합니다 내가 가지고 올 것을에서 (1 = 최근 문서 다운로드)

SELECT 
    P.EMAIL, 
    C.DOC_ID, 
    MAX(C.DOWNLOAD_DATE) 
FROM 
    PARENT P, 
    CHILD C 
WHERE 
    P.EMAIL = C.EMAIL 

하지 말아주십시오 웃음 지금까지! 내 생각에 내 뇌는 튀김!

+2

자세히 설명해 주시겠습니까? CHILD.RANK를 숫자로 업데이트 하시겠습니까? 왜 부모 테이블이 필요한가요? – dbd

+0

SQL Server는 순위 값을 생성하는'ROW_NUMBER()'함수를 가지고 있습니다. 그러나 MS Access는이를 지원하지 않습니다. MS Access에서이 질문을 확인하십시오 - http://stackoverflow.com/questions/3516739/access-function-or-expression-equ-sql-row-number – dbd

+0

하위 순위는 이메일 ID별로 그룹화되어 있습니다 .. 네, 기술적으로 부모 테이블이 필요 없어요 ... 여러 다른 문서가 같은 날 다운로드되는 경우 특정 이메일에 대한 최신 레코드를 가져옵니다 ... 문서별로 그룹화 – Hightower

답변

1

디스플레이 이상 (순위를 지정해야 함)에 Rank_ID를 사용하는 경우 디자인에 문제가있을 수 있습니다.

오늘 DOC_ID = 1을 체크 아웃 한 다음 업데이트를 실행하여 순위를 지정하고 내일 같은 일이 발생하면 ROCK가 1 인 DOC_ID = 1에 대해 두 개의 레코드가 생성됩니다 ?

올바른 순서로 레코드를 표시하기 위해 이와 같은 방법을 사용할 수 있습니다. 쿼리 1은 레코드를 순서대로 표시합니다. 쿼리 2은 순위 값을 추가합니다 (첫 번째 쿼리가 필요함).

QUERY 1: 
SELECT 
    LAST(EMAIL) AS EMAIL, 
    DOC_DOC_ID, 
    Max(DOWNLOAD_DATE) AS DOWNLOAD_DATE 
FROM 
    CHILD 
GROUP BY 
    DOC_DOC_ID 
ORDER BY 
    Max(DOWNLOAD_DATE) DESC; 


QUERY 2: 
SELECT 
    testing.EMAIL, 
    testing.DOC_DOC_ID, 
    testing.DOWNLOAD_DATE, 
    (select 
     count(*) 
    from 
     Query1 
    where 
     DOWNLOAD_DATE>testing.DOWNLOAD_DATE)+1 AS RANK 
FROM 
    Query1 as testing 
ORDER BY 
    testing.DOWNLOAD_DATE DESC; 
+0

예 ... 감사합니다. 이것을 위해 ... 쿼리는 실제로 한 번만 데이터를 정리하는 것입니다. 그래서 나는 데이터가 지금 정적 일 것이라고 상상한다. 좋은 조언. 나는 해결책을 조사 할 것이다. 감사 – Hightower

관련 문제