2013-03-06 68 views
1

我有兩個表。一個是InvoiceHeader,另一個是InvoiceDetails。我在InvoiceHeader中有一個名爲total的字段,我想從InvoiceDetails表中計算與該InvoiceID相關的所有成本。使用派生字段

我可以這樣做的最簡單方法是什麼?

我也在使用Access。如果您有任何疑問,請詢問。

回答

0

假設成本值存儲在名爲在InvoiceDetailscost數字領域,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; 

如果你的表是足夠大,以發現那些2種方法之間的速度差,我的猜測是第二會更快。無論您選擇哪一個,都將從InvoiceDetails.InvoiceID的索引中受益匪淺。

+0

工作完美。謝謝 – Niall2k12 2013-03-06 20:54:56

+0

我還沒有創建數據庫。我只是使用一些示例數據並找出我需要的查詢。將是一個相當小的數據庫,因爲它只是一個大學項目。我個人喜歡你提供的第二種解決方案,這就是我將要採用的方案。在考慮我在數據庫方面我還是個新手之前,我從來沒有見過這樣做。感謝你的幫助。 – Niall2k12 2013-03-06 21:27:57