我有一个包含两个表的数据库,第一个表称为“拍卖”,指的是我在 eBay 上下的订单。它包含拍卖详细信息,以及我为该拍卖支付的总金额。它看起来像:
id title total cost
1 some auction £10
然后我有另一张表格来存储该拍卖中的所有物品(通常是一捆物品),如下所示:
id title percentage of auction
1 book 40%
2 small book 20%
3 bookmark 40%
我想在 item 表中添加一个计算字段来计算 auction.total_cost * item.percentage_of_auction,尽管我认为这不太可能。因此,在上面的例子中,小书的计算值为 2 英镑(20% * 10 英镑)。
据我所知,不可能在计算字段中引用另一个表,所以我的问题是我应该怎么做?
我正在考虑在包含 auction.totalcost 的商品表中添加一个额外字段。这不是理想的选择,但它可以发挥作用,而且这不会是一个庞大的数据库,所以我可以忍受一点臃肿。但是,我如何在创建商品时自动提取总成本,它会更新吗?
或者还有其他方法可以做到这一点。
我想根据项目表中的“拍卖百分比”字段添加更多计算字段,因此实际上拥有一个可以进行计算的条目会比创建查询来执行此操作容易得多,然后必须基于该查询而不是几个简单的计算字段创建更多查询。
这只是一个个人项目,所以我不太担心数据规范化,并且可以忍受一些有点奇怪的东西。
答案1
好的,所以您有两张表:
- 拍卖
- 项目
以下是我的建议
#1 重命名 id 字段以反映表名
因此每个表中的第一列将重命名为
拍卖 ID 和物品 ID
分别
#2 在 Items 表中,在末尾添加一个字段来保存相关的 AuctionID
这被称为“外键”,用于将表关联在一起
您可以将此字段命名为完全相同的名称,即 AuctionID
但为了唯一性,我更喜欢将其命名为接近但略有不同的名称,以便在创建复杂查询时更简单(当有两个相同名称的字段名时不需要 tablename.fieldname)
因此,我们将 Item 表末尾的这个新字段命名为 AuctID
这个新的 AuctID 字段的数据类型应为数字和长整数(绝对不是自动编号)
现在填写与拍卖 ID 匹配的列,您的 Items 表现在将如下所示
id title percentage of auction AuctID
1 book 40% 1
2 small book 20% 1
3 bookmark 40% 1
现在创建一个查询
将拍卖和物品表都添加到此查询中
在每个表中的特定连接字段(即 AuctionID 和 AuctID)之间拖一条线
现在,在“按示例查询”网格的底部,您可以将两个表中的必填字段放到其中。
您想要的计算字段可以这样输入
物品价值:[拍卖百分比] * [总成本]
PS 为了避免字段周围需要 [方括号],我倾向于删除所有空格字段名称和表名称,
因此,我会将“拍卖百分比”等字段重命名为 percentage_of_auction 或 PercentageOfAuction
然后,查询中的计算字段可以输入为
商品价值:拍卖百分比 * 总成本