MS Query – 列1上的外连接LIKE列2?
任何人都可以帮助我创build一个左外部联接语句工作在MS Query?
基于Hogan的回答,以及这篇MSDN文章 ,我已经编辑了我的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略有不同,而且我正在努力弄清楚它想要什么。
上面的查询给了我一个期待一个连接操作符的错误:
我试图删除花括号{ }
,它抱怨表oj:
我试图删除oj
引用,它抱怨无效包围:
而在挫折中,我试图删除所有的括号,这使得它抱怨缺less操作语法错误:
除此之外,我在结构,转义字符,连接字符等方面尝试了一些变化。我觉得我只是在MS Query中旋转我的轮子,并希望有人更精通MSQ的细微差别可以指出我要出错的地方,帮助我做好。
要清楚,这是我期望实现的。
鉴于这两个表:
我想在CO表上进行左连接,匹配IR表上的大小,工具和材质:
哪个应该产生这个结果:
另外,我意识到这将返回匹配“P12” 和 “JP12”上的“P12” ,这不是所期望的行为,但是我觉得一旦得到这个基本查询工作,我就可以解决这个问题。 如果需要的话,我可以在该字段中的每个logging中添加一个前导或尾随的“/”,这样我就可以匹配“LIKE”%/'“或类似的东西。
在MS查询下面会给你确切的结果。我已经试过了样本数据和屏幕截图。
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+'%'))
testing数据显示在下面的屏幕截图中。
屏幕截图包含ms查询和你想要的结果。
这里是一个“外部”join通知标准是连接的一部分,而不是其中的一部分。
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 + '%']}
信贷霍根和布赖恩都。
我不得不做一些调整,但结束了以下半工作查询。 在MS Query很开心的意义上半工作,并创build了预期的结果表,但不匹配(或返回)右表中的任何内容。 (所有的行都是空的)
不知道是否应该将这个问题标记为已回答,并开始一个新的问题,说明为什么它没有返回预期的数据。
这变成了一个变色龙的问题 ,但它也没有技术上的答案(代码不能按预期工作)。
据我所知 – 霍根是正确的,大括号{}
需要被删除。 我也发现我必须删除所有的括号[]
。
布赖恩是正确的连接字符+
正在被需要。
所以我结束了这个半工作的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 + '%'