我花了大约20分钟搜索了类似的问题,但大多数都没有为MS Access数据库指定.
不幸的是我的SQL经验非常有限,所以我很感激你对此的意见.
您可以从此链接下载Access数据库,以查看我正在尝试完成TestDB.zip.
此图像显示了一个非常基本的表设置,作为我希望实现的MS Access 2003中的示例:

基本上我想运行一个SQL查询,它将显示包含相关表中所有信息的订单.
显然,如下所示的SQL查询将显示多行,其中包含重复信息,这不是我想要的.
SELECT Orders.OrderID, Orders.OrderTitle, Materials.Material, Materials.MaterialCost,
Labour.HoursTaken, Invoices.InvoiceAmount
FROM ((Orders INNER JOIN Labour ON Orders.OrderID = Labour.OrderID)
INNER JOIN Materials ON Orders.OrderID = Materials.OrderID)
INNER JOIN Invoices ON Orders.OrderID = Invoices.OrderID;
Run Code Online (Sandbox Code Playgroud)
结果:

基本上,我想要一个查询,它将汇总每个订单的每个材料,小时和发票.我在这个电子表格中根据需要制作的东西可以在这里看到:

显然,这个SQL不起作用,因为由于INNER JOINS导致多行,所以数字遍布整个地方.
SELECT Orders.OrderID, Orders.OrderTitle, Sum(Materials.MaterialCost) AS SumOfMaterialCost,
Sum(Labour.HoursTaken) AS SumOfHoursTaken,
Sum(Invoices.InvoiceAmount) AS SumOfInvoiceAmount
FROM ((Orders INNER JOIN Labour ON Orders.OrderID = Labour.OrderID)
INNER JOIN Materials ON Orders.OrderID = Materials.OrderID)
INNER JOIN Invoices ON Orders.OrderID = Invoices.OrderID
GROUP BY Orders.OrderID, Orders.OrderTitle;
Run Code Online (Sandbox Code Playgroud)
结果在这里:

我查看了多个SELECT语句,但我认为MS Access不支持这些语句
子查询将为您提供您正在寻找的内容:
SELECT O.OrderID, O.OrderTitle,
(SELECT Sum(M.MaterialCost) FROM Materials AS M
WHERE M.OrderID=O.OrderID) AS SumOfMaterialCost,
(SELECT Sum(L.HoursTaken) FROM Labour AS L
WHERE L.OrderID=O.OrderID) AS SumOfHoursTaken,
(SELECT Sum(I.InvoiceAmount) FROM Invoices AS I
WHERE I.OrderID=O.OrderID) AS SumOfInvoiceAmount
FROM Orders AS O
Run Code Online (Sandbox Code Playgroud)