您可以将一个表中具有另一个表的列名的列与第二个表链接吗
Posted
技术标签:
【中文标题】您可以将一个表中具有另一个表的列名的列与第二个表链接吗【英文标题】:Can you link a column in one table which has column names of another table with that second table 【发布时间】:2020-07-07 18:19:45 【问题描述】:我有两张桌子 A 和 B
表 A 包含表 B 中所有列的列表
表 B 的每一列都有值
在 MS Access 中,是否可以创建将表 A 中的列中的值与表 B 中的列链接的查询?
我想到的 SELECT 语句是这样的:
选择 A.Col1,A.Col2,B.Col1,B.Col2
从表 A 作为 A
LEFT OUTER JOIN TableB AS B
--这是我卡住的地方,但在伪代码中可能是.. A.Col3 中的 ON 值 = B.Col3
感谢您对此的任何帮助,即使它是“不,这不能在 Access 中完成”
【问题讨论】:
这些表没有关系。要求没有意义。您只为 TableA 显示 1 列,但您的伪代码引用 Col3。你期望输出是什么样的? 好的,谢谢您的回复。表 A 中的第 3 列包含表 B 的列名,所以基本上我希望查询返回表 A 的相关列以及列名在 A.Col3 中的 B 中的列的值。 - 是的,上面的伪代码写错了。 您研究的 1 个具体的非重复问题到底是什么? “链接”想说什么? Why is “Can someone help me?” not an actual question? PS 请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。请通过编辑而不是 cmets 进行澄清。在您发帖之前,请查看编辑框下方帖子的格式化版本。阅读代码和引文的内联和块格式的编辑帮助。 请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出尽可能少的代码,即您显示的代码可以通过您显示的代码扩展为不正常的代码。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask 暂停整体目标的工作,将代码砍到第一个表达式,没有给出你期望的内容,说出你的期望和原因。 【参考方案1】:TableB 不是规范化的数据结构。它与 TableA 没有关系,连接是不可能的,也没有意义。对 TableB 执行 UNION 查询以将数据重组为标准化结构。
我认为 TableB 有一个唯一标识符字段。
SELECT ID, "SourceOfReferrals_SQ001" AS Source, SourceOfReferrals_SQ001 AS Data FROM TableB
UNION SELECT ID, "SourceOfReferrals_SQ002", SourceOfReferrals_SQ002 FROM TableB
UNION SELECT ID, "SourceOfReferrals_SQ003", SourceOfReferrals_SQ003 FROM TableB
UNION SELECT ID, "SourceOfReferrals_SQ004", SourceOfReferrals_SQ004 FROM TableB
UNION SELECT ID, "SourceOfReferrals_SQ005", SourceOfReferrals_SQ005 FROM TableB;
现在,如果 TableA 中还有其他字段需要从中获取数据,则此查询可以连接到 TableA。
另一种方法是 VBA 循环记录集的字段以将数据写入规范化表。
【讨论】:
是的,它没有标准化。我只是想知道是否有解决方法。 UNION 对我不起作用,因为我必须写出大约 700 个 Union 语句(实际上有四个包含值的列表,但如果我让它为一个工作,那么我会为其他三个复制它)。我认为我最大的希望是在 Excel 中通过 VBA 完成此操作。感谢您的帮助。 或者 Access 中的 VBA 可以将数据写入规范化表。 任何 2 个表都可以在任何条件下有意义地连接。规范化与查询无关。无论你想说什么,只要有意义,你就不会说出来。以上是关于您可以将一个表中具有另一个表的列名的列与第二个表链接吗的主要内容,如果未能解决你的问题,请参考以下文章
将第一个文件的第一列与第二个文件中的行匹配,然后将第二个文件中匹配行的最后一列插入第一个文件中的新第一列