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 查询和结果。
任何人都可以帮我创建一个左外连接语句以在 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 查询和结果。