【问题标题】:sql - calculating the price of an order and sum of all orders on a receiptsql - 计算订单价格和收据上所有订单的总和
【发布时间】:2016-08-15 01:20:17
【问题描述】:

我有如下三张表:

菜单项

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 ???????????

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

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

任何帮助表示赞赏 =))

【问题讨论】:

  • 如果您有一个有用的解决方案,请记得投票,并将其标记为您接受的答案。
  • 注意,谢谢威廉!

标签: sql ms-access database-design


【解决方案1】:

根据您提供的示例数据,有点难以判断,但我假设每张收据可能包含多个订单。

以下查询将返回每个收据上的每个订单以及每个订单的菜单项总成本。这假设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

【讨论】:

  • 每张收据上确实可以有多个订单。并且美元符号是由货币显示格式自动添加的。当我运行这个查询时,我得到了同一张收据的多个条目。我希望在同一个查询中将收据上的所有订单汇总在一起。
  • @Daturk 在我的编辑中尝试查询,无论订单数量如何,每张收据都应该给你一个总数。
  • 完美。谢谢!最后,我有没有办法在Receipt 表的ReceiptPrice 属性上写TotalReceiptPrice?你认为这样做是明智的吗?
  • 当然,您将根据我们刚刚选择的值执行UPDATE,就像在 Gordon Linoff 的回答中一样,这取决于这是否明智。例如,收据总额是否可以随时间变化,您何时执行UPDATE?只是思考的食物。 ;)
【解决方案2】:

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

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

【讨论】:

  • 我在运行此查询时遇到语法错误,除了修复menuitem.menutitemid 的错字之外,我看不到其他解决方案。你能查一下吗?
  • @Daturk 。 . .我看到的唯一其他错误是inner join -- MS Access 喜欢“内部”这个词。
猜你喜欢
  • 1970-01-01
  • 2014-03-29
  • 2019-08-24
  • 2020-05-17
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
相关资源
最近更新 更多