访问:如何从表中检索某个字段并返回?

Posted

技术标签:

【中文标题】访问:如何从表中检索某个字段并返回?【英文标题】:Access: How to retrieve a certain field from a table and return it? 【发布时间】:2019-12-08 10:45:50 【问题描述】:

背景

我目前正在为一家小型书店开发一个简单的访问数据库。该业务出售书籍以及其他物品。 请参阅以下 ER 图here

问题

我的问题始于表Transaction。我想创建一个简单的表单,其中 小计 计算为 数量 购买乘以 价格(两者某项)。 但是Price 字段位于BookInfoFoodAndBevApparelAndSupplies 表中。

问题

如何根据Transaction 中的StockNum 遍历Transaction 表到Items 和我列出的表之一?

例如,客户使用 StockNum BK001 购买商品。我想在 BookInfo 表中检索与BK001 对应的 Price 并返回到 Transaction 以用于计算小计。

StockNum 字段存在于表BookInfoFoodAndBevApparelAndSupplies 中。

样本数据:BookInfo、Items、Transaction

理想输出:交易 1:客户购买了 2 本 StockNum 'BK001' 的书(忽略我在屏幕截图中已有的内容)。 'BK001' 的 Price 是 119.99 美元,我需要从 BookInfo 中检索它(我的问题是我想确保它转到 BookInfo 而不是其他两个表StockNum),因此将计算小计并显示 $239.98。目前,我一直在手动执行此操作。我希望能够使用不同的 StockNum 来做到这一点,例如那些以 AS 开头的 Apparel and Supplies 和 FB 开头的食物和饮料。

提前致谢!

【问题讨论】:

欢迎来到 ***!你试过什么,你能提供一个minimal reproducible example(例如SQL)。 您是否考虑过使用基于ON 等于StockNum 的LEFT JOIN 表在其中一个产品详细信息表中查找Price 嗨。 LucidChart 说我需要登录才能查看图表,我不想这样做。可以截图发一下吗? 样本数据和期望的结果在问题中会很有帮助。 拥有多个定价表确实很复杂。可以使用 DLookup() 或者可以在表单 RecordSource 中包含所有内容并在文本框中使用条件表达式来检索正确的价格。 【参考方案1】:

左连接所有表并使用 Case-When-Expression(Access 中的函数switch)进行不同的价格乘法:

SELECT t.StockNum, t.NumOrdered, 
switch(
  Left(t.StockNum,2) = 'BK' , (t.NumOrdered * b.Price),
  Left(t.StockNum,2) = 'AS' , (t.NumOrdered * a.Price),
  Left(t.StockNum,2) = 'FB' , (t.NumOrdered * f.Price),
) AS subtotal
FROM Transaction t
LEFT JOIN BookInfo b ON b.StockNum = t.SockNum
LEFT JOIN ApparelAndSupplies a ON a.StockNum = t.SockNum
LEFT JOIN FoodAndBev f ON f.StockNum = t.SockNum

【讨论】:

我收到以下错误:查询表达式中的语法错误(缺少运算符)'b.StockNum = t. StockNum LEFT JOIN ApparelAndSupplies a ON a.StockNum = t.StockNum LEFT JOIN FoodAndBev f ON f.StockNum = t.StockNum 我有表桥接 Transaction 表和三个名为 Items 的表,这会导致问题吗?感谢您的帮助!

以上是关于访问:如何从表中检索某个字段并返回?的主要内容,如果未能解决你的问题,请参考以下文章

如何从表中返回特定值

仅从表中的多个字段返回异常

如何使用 BeautifulSoup 从表中抓取特定列并作为熊猫数据框返回

MySQL 查询从表中检索数据和第二个查询以提取其他结果,没有重复

从表中检索的条目是不是重复? PHP

如何从表中选择所有列并计数?