Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access SQL正在从查询中删除括号_Sql_Ms Access - Fatal编程技术网

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

MS Access SQL正在从查询中删除括号,sql,ms-access,Sql,Ms Access,我有一个很好的问题。当我打开CreateQuery并在窗口中复制/粘贴SQL时,它运行良好,我可以编辑表单编号并保存查询。在我关闭查询,然后在设计视图中再次打开它之后,括号都消失了,当我尝试更改任何内容或保存它时,我得到了不支持的联接表达式。不管查询如何运行,结果都是正确的。我能做些什么来防止查询像这样被更改?为什么要去掉括号 SELECT DISTINCT A01.ID, A01.Symbol, A01.Number, A01.Module, A02.Form as FormHE3, MA

我有一个很好的问题。当我打开CreateQuery并在窗口中复制/粘贴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;

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

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

按查询选择组中冗余的DISTINCT;去掉明显的。 丢弃到[CodesAndFormsResults]中,同时重点构建一个简单的选择查询,该查询返回您想要的内容,并且“查询设计器”不会损坏该访问。您可以稍后再添加到[CodesAndFormsResults]中,但目前仅限于最简单的查询。 将Form='HE3'从join ON子句移动到基于tbl_PolForms的子查询中的WHERE子句。 选择 A01.ID, A01.符号, A01.编号, A01.模块, A02.表格如表3所示, MAXA02.序列为FormSeq 从…起 [01_上表]为A01 左连接 选择t.ID、t.Sequence、t.Form 来自tbl_PolForms AS t 其中t.Form='HE3' AS A02 在A01.ID=A02.ID上 分组 A02.表格, A01.ID, A01.符号, A01.编号, A01.模块 订购人 A01.编号, A01.符号, A01.模块;
否。如果将筛选器用作联接条件的一部分,则它将包括整个左表A01,并且仅包括右表A02中符合条件的行。但是,如果WHERE子句中存在相同的筛选器,则使用左联接的目的将失败。这两种方法产生了非常不同的结果。这确实有效,谢谢。如何添加另一个左联接?我尝试的每一种方法都会得到语法错误缺少运算符。我的第一次尝试是这样的。从01_上一个表作为A01左连接选择pf.ID,pf.Sequence,pf.Form从tbl_PolForms作为pf,其中'HE3'中的pf.FormNumber作为A01.ID=A02.ID左连接选择ex.UseCode,ex.Line1,ex.Line2 tbl_PropExt作为ex,其中'H315;'中的ex.UseCode作为A01.ID=A03.IDSorry上的A03,我刚刚注意到我在第二个select语句中缺少FROM。不过这没什么区别。从01_上一个表作为A01左连接选择pf.ID,pf.Sequence,pf.Form从tbl_PolForms作为pf,其中pf.Form在'HO04'中,'HO23'作为A02在A01.ID=A02.ID左连接选择ex.UseCode,ex.Line1,ex.Line2从tbl_PolExt作为ex,其中ex.UseCode在'H315'中作为A01.PolicyID=A03.PolicyID这在下面非常有效。从01_上一个表A01左连接选择pf.ID,pf.Sequence,pf.Form FROM tbl_PolForms作为pf,其中pf.Form在'HO04'中,'HO23'作为A01.ID=A02.ID左连接选择ex.ID,ex.UseCode,ex.Line1,ex.Line2从tbl_PropExt作为ex其中ex.UseCode在'H315'中作为A01.ID=A03.ID上的A03