MS 查询 - 第 1 列的外部联接 LIKE 第 2 列?

MS Query - outer join on column 1 LIKE column 2?

任何人都可以帮我创建一个左外连接语句以在 MS Query 中工作吗?

根据 Hogan 的回答和 this MSDN article,我已将我的 SQL 语句编辑为此(如下),但 MS Query 仍然不满意。

SELECT CO.MATERIALS1 AS 'Material',
       CO.`SIZES#1` AS 'Size', 
       CO.`TOOLS#1` AS 'Tool',
       IR.`BODY /JAW` AS 'BodyJaw', 
       IR.PN AS 'PartNo'
FROM {oj `COMBINATIONS$` CO 
LEFT OUTER JOIN `'INSERTS REVIEW$'` IR 
ON [IR.TOOL LIKE '% ' CO.`TOOLS#1` ' %']
      AND [IR.SIZE LIKE '% ' CO.`SIZES#1` ' %']
      AND [IR.MATERIAL  LIKE '% ' CO.MATERIALS1 ' %']}

MS Query 的语法似乎与我过去使用的标准 SQL / T-SQL 略有不同,我正在努力弄清楚它是什么想要。

上面的查询给了我关于期望连接运算符的错误:

我试着去掉花括号 { } 并且它抱怨 table oj:

我尝试删除 oj 引用,但它抱怨括号无效:

沮丧的是,我尝试删除所有括号,这使它抱怨缺少运算符语法错误:

除此之外,我在结构、转义字符、连接字符等方面尝试了很多变体。我觉得我只是在用 MS Query 转动我的轮子,希望有人更精通MSQ 的细微差别可以指出我哪里出错了,并帮助我改正。


明确地说,这就是我想要实现的目标。

鉴于这两个 table:

我想在 CO table 上进行左连接,匹配大小、工具和 IR material table:

应该产生这个结果:


此外,我意识到这将 return 与 "P12" "P12" "JP12" 上的 "P12" 匹配,即 不是 真正需要的行为,但我觉得一旦我让这个基本查询工作,我就可以解决这个问题。如果需要,我可能会在该字段中的每条记录中添加一个前导或尾随“/”,这样我就可以匹配 "LIKE '%/'" 或类似的东西。

这是一个 "outer" 连接通知,条件是连接的一部分而不是 where 的一部分。

SELECT CO.MATERIALS1 AS 'Material',
       CO.`SIZES#1` AS 'Size', 
       CO.`TOOLS#1` AS 'Tool',
       IR.`BODY /JAW` AS 'BodyJaw', 
       IR.PN AS 'PartNo'
FROM `COMBINATIONS$` CO
LEFT JOIN `'INSERTS REVIEW$'` IR 
       ON [IR.TOOL LIKE '% ' CO.`TOOLS#1` ' %'] 
      AND [IR.SIZE LIKE '% ' CO.`SIZES#1` ' %'] 
      AND [IR.MATERIAL  LIKE '% ' CO.MATERIALS1 ' %']

这项工作是否可行: 编辑

SELECT CO.MATERIALS1 AS 'Material',
       CO.`SIZES#1` AS 'Size', 
       CO.`TOOLS#1` AS 'Tool',
       IR.`BODY /JAW` AS 'BodyJaw', 
       IR.PN AS 'PartNo'
FROM {oj `COMBINATIONS$` CO 
LEFT OUTER JOIN `'INSERTS REVIEW$'` IR 
ON [IR.TOOL LIKE '%' + CO.`TOOLS#1` + '%']
      AND [IR.SIZE LIKE '%' + CO.`SIZES#1` + '%']
      AND [IR.MATERIAL  LIKE '%' + CO.MATERIALS1 + '%']}

感谢 Hogan 和 Brian。

我不得不做一些调整,但最终得到了以下半工作查询。在 MS Query 很高兴的意义上是半工作,并创建了预期的结果 table,但不匹配(或返回)右侧 table 的任何内容。 (所有行均为空)

不确定我是否应该将这个问题标记为已回答,然后开始一个关于为什么它没有返回预期数据的新问题。
这已经变成了一个有点 chameleon question,但它也没有技术上的答案(代码没有按预期工作)。


据我所知 - Hogan 是正确的,牙套 {} 需要移除。我还发现我必须删除所有括号 []

Brian 在需要连接字符 + 方面是正确的。

所以我得到了这个半工作的 SQL 声明:

SELECT CO.MATERIALS1 ,
       CO.`SIZES#1` , 
       CO.`TOOLS#1` ,
       IR.`BODY /JAW` , 
       IR.PN 
FROM  `COMBINATIONS$` CO 
LEFT OUTER JOIN `'INSERTS REVIEW$'` IR 
ON IR.TOOL LIKE '%' + CO.`TOOLS#1` + '%'
      AND IR.SIZE LIKE '%' + CO.`SIZES#1` + '%'
      AND IR.MATERIAL  LIKE '%' + CO.MATERIALS1 + '%'

下面的 ms 查询将为您提供确切的result.I 已尝试使用示例数据并附上屏幕截图。

SELECT CO.TOOL, CO.Material, CO.SIZE, IR.PN  , IR.`BODY/JAW`
FROM `G:\test1.xlsx`.`COMBINATIONS$` CO
 LEFT JOIN  `G:\test1.xlsx`.`'INSERTS REVIEW$'` IR
 ON CO.TOOL=IR.TOOL
 AND ((IR.MATERIAL Like '%'+CO.Material+'%')) 
 AND ((IR.SIZE Like '%'+CO.Size+'%'))

测试数据如下图所示。

以下屏幕截图包含您想要的 ms 查询和结果。