当需要在文本列上连接两个表时该怎么办?

时间:2016-04-11 19:28:44

标签: sql vba ms-access-2010

我有两个表,一个名为AllData的链接表和一个名为MIUOffset的普通表。它们都有一个名为MIUType的文本列。我需要在MIUType上加入两个表,而Inner Join MIUOffset on AllData.MIUType = MIUOffset.MIUType的连接起作用,最终,它是无法忍受的。

有没有办法在字符串字段上连接表格,并且它可以在加入数字字段的任何地方工作?

我的后备计划是修改其数据库中的链接表,使其具有整数字段作为MIUType数据的数字键,但如果可以避免,我宁愿不这样做。

我最终要做的是添加/减去列作为where语句的一部分,MIUOffset表具有每个唯一MIUType的偏移量。结果等式类似于AllData.[0] + MIUOffset.Offset < -95

除了在核心数据结构中添加等同于MIUType数据的数字键,或者重构代码以遍历每个MIUType然后在结尾处添加结果之外,还有什么方法可以做到这一点吗? p>

我更倾向于将解决方案严格地放在sql中,但这一切都是在VBA中完成的,所以如果有人有任何建议,还有其他选择。

1 个答案:

答案 0 :(得分:0)

  

有没有办法在字符串字段上连接表格并让它在加入数字字段时尽可能快地工作?

你没有。相反,您规范化您的表。根据定义加入数字字段比加入字符串字段要快得多。

两列中MIUType重复的值是多少次?

  

我的后备计划是修改其数据库中的链接表,使其具有一个整数字段作为MIUType数据的数字键,但如果可以避免,我宁愿不这样做。

这不是一个“后备计划”,它本来应该是正确的设计。我不确定你为什么要避免

创建一个单独的表来存储所有可能的值一次,并将每个值映射到一个数字ID(自动编号主键字段将执行/ {{1}如果链接的源是在SQL Server上的。)

然后在表中添加identity列,并运行更新以按值的数字ID链接值。然后删除冗余的MIUTypeId字符串列,从现在开始加入MIUType以获取关联的字符串值。如果它打破20个报告和15个视图,那么不要删除列,而是修复20个报告和15个视图以使用新字段,然后当字符串列的依赖关系全部消失时,将其删除。