【发布时间】:2015-10-30 17:16:31
【问题描述】:
我有一个包含两张桌子的餐厅数据库。其中一张表是'item',具有以下属性:
ItemID, ItemName, Price and Cuisine.
我有另一个表'bill',它具有以下属性:
OrderID, Item1_ID, Item2_ID, Item3_ID, Quantity_1, Quantity_2, Quantity_3, Total.
bill 的第 2、3、4 属性指定了 3 个具有不同 ItemID 的商品,第 5、6、7 属性指定了它们各自的数量。我想通过将它们各自的数量乘以它们的价格(取自“项目”表)来计算每个项目的价格,然后将它们各自的价格相加并保存结果。
1.我能够生成三个单独的价格,但由于它们是派生属性,我无法保存它们并因此更新“账单”的“总计”属性。我该怎么做呢?这是我用来生成三个单独价格的代码:
SELECT A.Total_1, B.Total_2, C.Total_3
FROM
(SELECT bill.orderid, bill.quantity_1 * item.Price AS 'Total_1'
FROM bill, item
WHERE item.itemid = bill.item_1
)A,
(SELECT bill.orderid, bill.quantity_2 * item.Price AS 'Total_2'
FROM bill, item
WHERE item.itemid = bill.item_2
)B,
(SELECT bill.orderid, bill.quantity_3 * item.Price AS 'Total_3'
FROM bill, item
WHERE item.itemid = bill.item_3
)C
WHERE A.orderid = B.orderid AND A.orderid = C.orderid;
- 我应该删除属性“总计”,因为它是派生的?我确实希望在另一个表中使用它的值,那么他们有什么其他方法可以解决这个问题吗?
【问题讨论】:
-
您想在数据库中插入商品和数量后立即计算总金额吗?
-
没有。我已经插入了项目和数量。我想在需要时运行查询来计算总数。
-
你接缝没有问题,你的项目可以在账单表中的任何一个位置吗?我的意思是你可以有这个例子:bill1 item_1 = idItem1 .., bill2 item_1 = idItem3 item_2 =idItem1 ... bill3 item_1 = idItem3 item_2 = idItem_2 item_3 = idItem3 ???