VBA MS Access 查询 - 从链接表返回最大日期
我浏览了Greatest-n-per-group标签并找到了很好的信息,但没有解决我的具体问题。
表 A 存储有关所有使用材料的化学数据。 它具有 RMCode、TradeName、Hazardous、DangerousGood(均为 TEXT)等字段。
表 B 包含所有材料安全数据表(至少每 5 年更新一次),并且我们存储取代的文档。 这些字段是 RMCode (TEXT)、linkMSDS (HYPERLINK) 和 MSDSdate (DATE/TIME)。 LinkMSDS 是 pdf 的超链接,我们将发布日期存储在 MSDSdate 中。一个 RM 代码可以附有多个 MSDS。
这两个表通过“RM 代码”字段链接。
我想生成所有属于危险物品的材料的列表 - 但我只想提供最新的 MSDS。 以下代码当前返回所有 MSDS。
选择 tableB.[RMCode]、tableA.[商品名称]、tableA.[危险]、tableA.[DangerousGood]、tableB.[链接 MSDS]
FROM tableA INNER JOIN tableB ON tableA.[RM 代码]=tableB.[RM 代码]
WHERE tableA.[DangerousGood] <> “N/A”和表 B.[MSDSdate] 中
<块引用> <块引用>(SELECT MAX(tableB.[MSDSdate])
来自表B
GROUP BY tableB.[RMCode])
ORDER BY tableB.[RMCode];
I have looked throughout the greatest-n-per-group tag and found great information but nothing that solves my specific problem.
Table A stores chemical data about all materials used.
It has fields such as RMCode, TradeName, Hazardous, DangerousGood (all TEXT)
Table B contains all the material safety data sheets (which are updated at least every 5 years), and we store superceded documents.
The fields are RMCode (TEXT), linkMSDS (HYPERLINK) and MSDSdate (DATE/TIME).
LinkMSDS is hyperlink to the pdf and we store the date of issue in MSDSdate. One RM code can have many attached MSDSs.
The two tables are linked through the field 'RM Code.'
I want to generate a list of all materials which are DangerousGoods - but I want only the most recent MSDS to be presented.
The code below is currently returning all MSDSs.
SELECT tableB.[RMCode], tableA.[TradeName], tableA.[Hazardous], tableA.[DangerousGood], tableB.[link MSDS]
FROM tableA INNER JOIN tableB ON tableA.[RM Code]=tableB.[RM code]
WHERE tableA.[DangerousGood] <> "N/A" and tableB.[MSDSdate] In
(SELECT MAX(tableB.[MSDSdate])
FROM tableB
GROUP BY tableB.[RMCode])
ORDER BY tableB.[RMCode];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,您需要每个 RMCode 的最新 MSDS 日期。
如果这是正确的,您可以将其用作连接到 TableA 的 suquery,并添加 WHERE 子句以排除带有 DangerousGood = "N/A" 的行。
最后,如果您需要每个 RMCode/MSDSdate 组合的 linkMSDS 值,您可以加入 TableB 的另一个副本。
Sounds to me like you need the latest MSDSdate for each RMCode.
If that's correct, you can use it as a suquery joined to TableA and add in the WHERE clause to exclude the rows with DangerousGood = "N/A".
Finally, if you need the linkMSDS values for each of those RMCode/MSDSdate combinations, you can join another copy of TableB.