MS Access SQL正在从查询中删除括号

时间:2013-04-16 15:53:01

标签: sql ms-access

我有这个查询工作正常。当我打开创建查询并在窗口中复制/粘贴SQL时,它运行正常,我可以编辑表单编号并保存查询。关闭查询然后在设计视图中再次打开它后,括号全部消失,当我尝试更改任何内容或保存它时,我得到Join Expression Not Supported。查询无论如何运行,结果都是正确的。我该怎么做才能防止查询被改变?为什么要删除括号?

SELECT DISTINCT 
A01.ID,
A01.Symbol,
A01.Number,
A01.Module,
A02.Form as FormHE3, 
MAX (A02.Sequence) as FormSeq
INTO [CodesAndFormsResults]
FROM 
(01_PreviousTable A01
left outer join tbl_PolForms A02 ON (A02.ID = A01.ID 
and A02.Form = 'HE3'))
GROUP BY 
A02.Form, 
A01.ID, 
A01.Symbol,
A01.Number, 
A01.Module
ORDER BY
A01.Number,A01.Symbol,A01.Module;

2 个答案:

答案 0 :(得分:2)

  1. SELECT DISTINCTGROUP BY查询中是多余的;摆脱DISTINCT
  2. 放弃INTO [CodesAndFormsResults],同时专注于构建一个简单的SELECT查询,该查询返回您想要的内容以及哪个Access查询设计器不会破坏。您可以稍后再添加INTO [CodesAndFormsResults],但现在可以限制自己最简单的查询。
  3. Form = 'HE3'从联接ON子句移至基于WHERE的子查询中的tbl_PolForms子句。
  4. SELECT
        A01.ID,
        A01.Symbol,
        A01.Number,
        A01.Module,
        A02.Form AS FormHE3, 
        MAX(A02.Sequence) AS FormSeq
    FROM 
        [01_PreviousTable] AS A01
        LEFT JOIN 
        (
            SELECT t.ID, t.Sequence, t.Form
            FROM tbl_PolForms AS t
            WHERE t.Form = 'HE3'
        ) AS A02
        ON A01.ID = A02.ID 
    GROUP BY 
        A02.Form, 
        A01.ID, 
        A01.Symbol,
        A01.Number, 
        A01.Module
    ORDER BY
        A01.Number,
        A01.Symbol,
        A01.Module;
    

答案 1 :(得分:1)

括号被删除,因为它们是不必要的。 MS Access始终尝试在保存之前简化查询。有时你可以欺骗MS Access而不管它,但它通常会使你的查询变得更加复杂和脆弱。

查询解析器正在抱怨(“不支持加入语法”),因为它无法直观地显示查询。指定条件连接时总是会发生这种情况。真的没有问题。您只需通过设计器将查询编辑为SQL而不是。