繁体   English   中英

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

[英]MS Access SQL is removing parentheses from query

我有这个查询工作正常。 当我打开创建查询并在窗口中复制/粘贴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;
  1. SELECT DISTINCTGROUP BY查询中是多余的; 摆脱DISTINCT
  2. 当您专注于构建一个简单的SELECT查询时,丢弃INTO [CodesAndFormsResults] ,该查询返回您想要的内容以及哪个Access的查询设计器不会破坏。 您可以稍后再添加INTO [CodesAndFormsResults] ,但现在可以将自己限制为最简单的查询。
  3. Form = 'HE3'从join ON子句移动到基于tbl_PolForms的子查询中的WHERE子句。
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;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM