MS Access 加入通配符
Posted
技术标签:
【中文标题】MS Access 加入通配符【英文标题】:MS Access join on wildcard 【发布时间】:2017-05-22 19:44:11 【问题描述】:所以我有两个表,tblMaster 和 Software。
我想通过通配符连接来连接这些表。我的表格是这样格式化的。
tblMaster
|ID|Title |type|state|
------------------------------------------------
|1 |Adobe Reader |A |Close|
|2 |Apache HTTP Server |A |Close|
|3 |Multiple Mozilla Products |A |Open |
|4 |Microsoft Windows File Handling |A |Open |
|5 |Microsoft Windows Client Server |A |Open |
|6 |HP Printer |A |Open |
|7 |Adobe Acrobat |A |Close|
软件
|SWID|Software Title |location|
----------------------------------
|1 |Adobe Reader |1|
|2 |Apache |1|
|3 |Mozilla |1|
|4 |Microsoft Windows |2|
|5 |HP |3|
这是我的尝试:
SELECT * FROM Software
left Join tblMaster on Software.[Software Title] like "*" & tblMaster.Title & "*";
但是当我这样做时,我得到了这个错误:
无法加入备忘录、OLE 或超链接对象(Software.[Software Title] like "" & tblMaster.Title & "")。
【问题讨论】:
【参考方案1】:你不能加入通配符,所以这需要一点创造力:
SELECT *
FROM Software
Left Join (SELECT tblMaster.*, Software.[SWID]
FROM tblMaster, Software
WHERE [Software Title] LIKE "*" & tblMaster.Title & "*")
AS A
ON A.[SWID] = Software.[SWID]
这首先链接所有可能的连接,然后实际连接字段。
会报[Software Title]
两次,有问题就调整。
如果您可以使用内部联接,则可以只使用子查询。
【讨论】:
抱歉这么久才回来。我喜欢你的解决方案,但我仍然收到Cannot join on Memo, OLE, or Hyperlink (Software.[Software Title]=A.[Software Title])
错误
现在尝试编辑的答案。它连接不同的字段,但它实际上比较了内部查询中的软件标题(括号之间)。如果这样不行,也请把表结构贴出来(每列的类型,截图或者写的)【参考方案2】:
你可以试试这个:
SELECT
Software.*
FROM
Software,
tblMaster
WHERE
Software.[Software Title] Like "*" & tblMaster.Title & "*";
【讨论】:
这是内连接,不是左连接 是的,但没有请求来自 tblMaster 的字段。 在问题中,选中的列是通用通配符,等于Software.*, tblMaster.*
,即使没有请求来自tblMaster的字段,那些来自未加入的Software的字段也不符合where标准。以上是关于MS Access 加入通配符的主要内容,如果未能解决你的问题,请参考以下文章