微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Microsoft Access 2016-需要结合使用JOIN的SQL查询.... ON Col1最喜欢Col2

如何解决Microsoft Access 2016-需要结合使用JOIN的SQL查询.... ON Col1最喜欢Col2

我正在使用Microsoft Access2016。我有一个数据表[Data],其中包含数千行数据。我有一个查找表[Lookup],其中包含所有已知的项目ID。这些表应结合在项目ID(这是一个字符串字段)上。通常,我将使用以下方式联接这些表:

SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] = [Lookup].[ProjectID]

问题是[Data]项目ID字段比查找的字符串长得多。例如

数据:

  • PROJECT.TS.01.004.005

查找:

  • PROJECT.TS
  • PROJECT.TS.01
  • PROJECT.TS.02

我尝试使用以下内容

 SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] LIKE [Lookup].[ProjectID] + '*'

唯一的问题是查找表中有多个条目与数据字段相似。我需要能够加入不仅是“ LIKE”而且条目长度最大的所有“ LIKE”条目。

看来,我真正需要的是调用一个“ MOST LIKE”函数,但据我所知sql语法不存在。

关于如何有效地连接这两个表的任何建议吗?

解决方法

考虑:

SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] LIKE [Lookup].[ProjectID] + '*' 
WHERE Len(Lookup.ProjectID) = DMax("Len(ProjectID)","Lookup","'" & Data.ProjectID & "' LIKE ProjectID & '*'");

SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] LIKE [Lookup].[ProjectID] + '*' 
WHERE Len(Lookup.ProjectID) = (
    SELECT Max(Len(Lookup.ProjectID)) FROM Lookup WHERE Data.ProjectID LIKE Lookup.ProjectID & "*");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。