【发布时间】:2020-08-01 17:41:14
【问题描述】:
如果在 SO 中回答了这个问题,我们深表歉意。我搜索并找不到明显的重复项。我是 Access 新手,继承了旧的 Access MDB(2000 文件格式)。 [注意:我使用的是 Office 365。]
数据在 5 个表中。但是,只有 4 个与关系相关。第五个(未连接)表是 3 个字段中不同数据的混搭:Type、Code 和 Description。 Type 有多个具有重复值的行。每个类型行都有一个唯一的Code 和Description。每个唯一类型对应于 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 中的类型条目之间不完全匹配。 (例如,Table_5 中的 Atype 值对应于 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 中获取描述。有没有更好的方法来做到这一点?
【问题讨论】:
-
一个 UNION 查询可以将多个字段重新排列为一个字段,但一个 UNION 中的 SELECT 行限制为 50 个。您有 250 多个字段需要重新排列。我预计将需要 VBA 和临时表将这些数据重新排列为相关结构。
-
对于所有 250 多个字段,我需要更多表,这并不奇怪。我不需要所有这些。超过 100 个字段只有 1 或 2 个代码。对于初学者,我对一些领域( [Table_5].Type=='value1'; [Table_1].Field2name -> [Table_5].Type=='value2'; [Table_1].Field3name -> [Table_5].Type=='value3';然后根据匹配的代码返回描述。 (一般来说,Fieldiname 和 valuei 是不一样的。)我是否需要另一个表来将 [Table_1].Fieldiname 映射到 [Table_5].Type 值?
标签: ms-access