sql - 计算订单的价格和收据上所有订单的总和

时间:2016-04-21 17:15:42

标签: sql ms-access database-design

我有三张表如下:

菜单项

MenuItemID   ItemName   ItemPrice
X0001        LatteSmall   $15
X0002        LatteBig     $18
X0003        MochaSmall   $16

订单

OrderID MenuItemID ReceiptID`
O000001 X0001      R000001
O000002 X0002      R000001
O000003 X0001      R000002
O000004 X0003      R000003

收据

ReceiptID ReceiptPrice
R00000001 ???????????
R00000002 ???????????
R00000003 ???????????
R00000004 ???????????

我正在尝试做的是:计算每个订单的价格,然后总结属于每个收据的订单。列出ReceiptPrice表中Receipt字段中的总计值。

如何使用Microsoft Access 2010上的单个查询执行此操作?

感谢任何帮助=))

2 个答案:

答案 0 :(得分:0)

从您提供的示例数据来看,它有点难以辨别,但我认为每张收据可能包含多个订单。

以下查询将返回每张收据上的每个订单,每个订单的总菜单项目成本。这假设ItemPrice是数字,并且实际上不包含'$'字符,也许您可​​以确认?

SELECT O.ReceiptID, O.OrderID, SUM(MI.ItemPrice) AS TotalReceiptPrice
FROM Orders AS O INNER JOIN MenuItem AS MI ON O.MenuItemID = MI.MenuItemID
GROUP BY O.ReceiptID, O.OrderID

如果您只希望查看每张收据的总金额,包括多个订单,请尝试此操作;

SELECT O.ReceiptID, SUM(MI.ItemPrice) AS TotalReceiptPrice
FROM Orders AS O INNER JOIN MenuItem AS MI ON O.MenuItemID = MI.MenuItemID
GROUP BY O.ReceiptID

答案 1 :(得分:0)

您想要更新数据库。这是一种方式:

update receipt
    set receiptprice = (select sum(itemprice)
                        from menuitem inner join
                             orders 
                             on menuitem.menuitemid = orders.menuitemid
                        where orders.receiptid = receipt.receiptid
                       );