首页 > 解决方案 > 使用 MS Access 跨链接表获取数据

问题描述

我是 MS Access 的新手,我正在尝试加快在 Powershell 中一直存在的数据收集过程。在 Powershell 中,我有 10 个左右的 Web API 调用来获取数据,每个调用都作为具有多个属性(字段)的对象返回。每组数据都具有与 1 个或多个其他数据集相关的字段。获取数据非常快,但是将一组对象通过管道传送到 where-object 到 select-object 需要一个多小时,而且实际上并没有那么多数据。每个对象包含 500-1500 个“记录”和 5 到 10 个“字段”,所以我想为什么不导出这些数据并使用旨在搜索数据的东西来完成这项工作呢?我将每个对象导出为单独的 .CSV 文件。所以进入MS Access..

我将每个 CSV 作为单独的表导入(很简单。)我将在本示例中将其简化为以下 3 个表:

[表格] https://i.stack.imgur.com/UCH1F.jpg

每个表都有将其与其他表相关联的字段。几乎每个表中都有某种 Id 字段与另一个表中的另一个 Id 字段相关,我需要从中提取一个名为“name”的字段。我正在尝试跟踪从播放器名称到它的网络名称到它的应用程序名称、到它的布局名称等的面包屑......我想构建一个查询,我最终只能导出为 Excel 文件. 我也更愿意只写出 SQL,除非它真的更容易理解可视化查询生成器。我正在寻找包含以下信息的工作表:

Player's Name 将包括 Players 表中的所有名称,并且仅获取该数据对我来说很有意义。SELECT Name AS PlayerName FROM Players 其他一切,不是那么多。我觉得这最终会成为一些大型查询,因为我在相关表之后更深入地了解相关表。在 Excel 中,跨选项卡使用 Vlookups 会很简单,但这似乎不是最好的方法。鉴于上述信息,我正在尝试实现以下输出:

结果表

非常感谢任何有关策略和语法的帮助!

标签: sqlms-access

解决方案


您正在寻找JOIN子句。

SELECT
  Players.Name PlayerName, Networks.Name PlayerNetwork, Applications.Name ApplicationName
FROM
  Players
LEFT OUTER JOIN
  Networks
ON
  Networks.ID = Players.NetworkId
LEFT OUTER JOIN
  Applications
ON
  Applications.Id = Players.ApplicationID

推荐阅读