1

我有这个工作正常的查询。当我打开创建查询并在窗口中复制/粘贴 SQL 时,它运行良好,我可以编辑表单编号并保存查询。在我关闭查询然后在设计视图中再次打开它后,括号都消失了,当我尝试更改任何内容或保存它时,我得到不支持加入表达式。查询无论如何都会运行,并且结果是正确的。我能做些什么来防止查询被这样改变?为什么要去掉括号?

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;
4

2 回答 2

2
  1. SELECT DISTINCTGROUP BY在查询中是多余的;摆脱DISTINCT
  2. INTO [CodesAndFormsResults]当您专注于构建一个SELECT返回您想要的内容并且 Access 的查询设计器不会破坏的普通查询时,请放弃。您可以INTO [CodesAndFormsResults]稍后再添加,但现在将自己限制为可能的最简单查询。
  3. Form = 'HE3'从 joinON子句移动到WHERE基于tbl_PolForms.
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;
于 2013-04-16T16:36:14.897 回答
1

括号被删除,因为它们是不必要的。MS Access 总是在保存之前尝试简化查询。有时您可以欺骗 MS Access 使其不理会它,但这通常会使您的查询更加复杂和脆弱。

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

于 2013-04-16T16:16:47.063 回答