我有两张桌子。一个是InvoiceHeader,另一个是InvoiceDetails。我在InvoiceHeader中有一个名为total的字段,我想从InvoiceDetails表中计算与该InvoiceID相关的所有费用。
我能做的最简单的方法是什么?
我也在研究Access。如果您有任何问题,请询问。
答案 0 :(得分:0)
假设费用值存储在cost
中名为InvoiceDetails
的数字字段中,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
的索引中获益匪浅。