根据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略有不同,我正在努力弄清楚它想要什么。
上面的查询给出了关于期望连接运算符的错误:
我尝试删除花括号{ }
并抱怨表oj:
我尝试删除oj
引用,并抱怨无效的包围:
我沮丧地尝试删除所有括号,这使得它抱怨缺少运算符语法错误:
除此之外,我在结构,转义字符,连接字符等方面尝试了很多变化。我觉得我只是在这里用MS Query旋转我的轮子,并希望有更多的人精通MSQ的细微差别可以指出我出错的地方,并帮助我做对。
另外,我意识到这将返回" P12"在" P12" 和" JP12"这不真的是理想的行为,但我觉得一旦我得到这个基本查询,我就可以解决这个问题。如果需要,我可以添加一个前导或尾随" /"对于该领域的每一条记录,我都可以匹配" LIKE'%/'"或类似的东西。
答案 0 :(得分:2)
这是一个“外部”联接通知,标准是联接的一部分,而不是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 ' %']
答案 1 :(得分:1)
这会有效: 的修改
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 + '%']}
答案 2 :(得分:1)
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+'%'))
测试数据显示在下面的屏幕截图中。
以下屏幕截图包含您想要的ms查询和结果。
答案 3 :(得分:0)
归功于Hogan和Brian。
我不得不做一些调整,但结果是以下半工作查询。在MS Query很满意的意义上进行半工作,并创建了预期的结果表,但是没有匹配(或返回)右表中的任何内容。 (所有行都为空)
不确定我是否应该将此问题标记为已回答,并开始一个新问题,说明为什么它没有返回预期数据。
这变成了一点chameleon question,但它在技术上还没有回答(代码没有按预期工作)。
至于我所得到的 - 霍根是正确的,需要删除大括号{}
。我还发现我必须删除所有括号[]
。
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 + '%'