首页 > 解决方案 > 从多个字段查询/关系到相关表/查询中的单个字段

问题描述

如果在 SO 中回答了这个问题,我们深表歉意。我搜索并找不到明显的重复项。我是 Access 新手,继承了旧的 Access MDB(2000 文件格式)。[注意:我使用的是 Office 365。]

数据在 5 个表中。但是,只有 4 个与关系相关。第五个(未连接)表是 3 个字段中不同数据的混搭:TypeCodeDescriptionType有多个具有重复值的行。每个 Type 行都有一个唯一的CodeDescription。每个唯一类型对应于 Table_1 中的一列,代码是在该列中找到的值。(Table_5 中有 3000 行,有超过 250 个独特的类型,每个类型都有 1-500 多个代码。)这是 Table_5 的简化版本:

Type   Code  Description
Atype  A     Atype_A_Description
Atype  B     Atype_B_Description
Atype  X1    Atype_X1_Description
...
Class  1     Class_1_Description
Class  2     Class_2_Description
Class  9     Class_9_Description
...
Source A     Source_A_Description
Source A1    Source_A1_Description
Source A2    Source_A2_Description
...

更复杂的是,Table_1 中的字段名称与 Table_5 中的类型条目之间不完全匹配。(例如Atype,Table_5 中的值对应于 Table_1 中命名的字段ACC_TYPE1。)

我正在研究一种基于 Table_1 中的字段名称和值从 Table_5 中获取描述的方法。我为 1(硬编码)类型做了这个。我在 Table_5 中为该类型创建了一个查询,并通过关系将其连接到 Table_1。

这是我所做的:
Table_5_Atype_Query(作为 SQL,让我知道在 SO 中是否首选另一种格式)

SELECT Table_5.[Type], Table_5.[Code], Table_5.[Description]
FROM Table_5
WHERE (((Table_5.[Type])="Atype"));

关系是:

Table/Query:  Related Table/Query:
Table_1       Table_5_Atype_Query
ACC_TYPE1     Code

这非常适合根据 Table_1 中 ACC_TYPE1 的值从 Table_5 中获取描述字段引用代码。它不可扩展以查找其他类型/代码对的描述。(我需要 250 个唯一的查询和关系。)换句话说,我想创建一个方法来根据 Table_1 中的任何列名和值从 Table_5 中获取描述。有没有更好的方法来做到这一点?

标签: ms-access

解决方案


UNION 查询可以将字段重新排列为规范化的数据结构。

具有 5 个字段的 UNION 查询:

SELECT ID, field1 as Code, "f1" as src from table1
UNION SELECT ID, field2, "f2" from table1
UNION SELECT ID, field3, "f3" from table1
UNION SELECT ID, field4, "f4" from table1
UNION SELECT ID, field5, "f5" from table1;

当然,请使用您的实际字段和表名称。现在在连接到 table5 的另一个查询中使用该查询。

SELECT 行的限制为 50 条。UNION 没有查询设计器或向导 - 必须使用 SQLView。


推荐阅读