2013-03-06 1 views
1

두 개의 테이블이 있습니다. 하나는 InvoiceHeader이고 다른 하나는 InvoiceDetails입니다. InvoiceDetails 테이블에서 해당 InvoiceID와 관련된 모든 비용을 계산하려는 Total이라는 InvoiceHeader 필드가 있습니다.파생 필드 사용

가장 쉬운 방법은 무엇입니까?

저는 Access에서도 작업하고 있습니다. 질문이 있으시면 언제든지 문의하십시오. 비용 값을 가정

답변

0

InvoiceDetails에서 cost라는 숫자 필드에 저장되고, InvoiceID은 두 테이블의 숫자 필드입니다 ...

SELECT 
    ih.*, 
    DSum("cost", "InvoiceDetails", "InvoiceID = " & ih.InvoiceID) 
     As total_cost 
FROM InvoiceHeader AS ih; 

또는 당신은 계산 집계 쿼리를 사용할 수 있습니다 각 InvoiceID에 대한 합계와 그 합치면 InvoiceHeader. 테이블이 그 두 방식 사이의 속도 차이를 느낄 수있을만큼 큰 경우

SELECT ih.*, sub.total_cost 
FROM 
    InvoiceHeader AS ih 
    INNER JOIN 
    (
     SELECT InvoiceID, Sum(cost) AS total_cost 
     FROM InvoiceDetails 
     GROUP BY InvoiceID 
    ) AS sub 
    ON ih.InvoiceID = sub.InvoiceID; 

, 내 생각 엔 두 번째는 더 빠른 것입니다. 어느 쪽을 선택 하든지간에 인덱스는 InvoiceDetails.InvoiceID에 큰 도움이됩니다.

+0

그 덕분에 완벽했습니다. 감사합니다 – Niall2k12

+0

아직 데이터베이스를 만들지 않았습니다. 몇 가지 샘플 데이터를 사용하고 필요한 쿼리를 파악하고 있습니다. 그것은 단지 대학 프로젝트이므로 아주 작은 데이터베이스 일 것입니다. 개인적으로 나는 당신이 준 두 번째 해결책이 마음에 든다. 그것은 내가 갈 일이다. 고려해보기 전에 그런 식으로 본 적이 한번도 본 적이 없어요. 모든 도움에 감사드립니다. – Niall2k12