1

我有两张桌子。一个是 InvoiceHeader,另一个是 InvoiceDetails。我在 InvoiceHeader 中有一个名为 total 的字段,我想从 InvoiceDetails 表中计算与该 InvoiceID 关联的所有成本。

我能做的最简单的方法是什么?

我也在研究 Access。如果您有任何问题,请询问。

4

1 回答 1

0

假设成本值存储在名为costin的数字字段中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.

于 2013-03-06T20:35:38.513 回答