MS Access Query 中的语法错误 [重复]

Posted

技术标签:

【中文标题】MS Access Query 中的语法错误 [重复]【英文标题】:Syntax error in MS Access Query [duplicate] 【发布时间】:2016-05-27 11:26:01 【问题描述】:

我的 MS Access 记录源中出现语法错误(“缺少运算符”)。 SQL Server 2012 执行它没有问题,但是当我让 Access 2016 执行它时,我得到这个错误。我希望 Access 有不同的案例陈述要求,但我不确定。

SELECT 
    r.Rubrieknaam, 
    CASE 
       WHEN (SELECT count(Voorwerpnummer) 
             FROM VoorwerpInRubriek 
             WHERE rubrieknummer = r.Rubrieknummer) IS NULL 
          THEN 0
          ELSE (SELECT count(Voorwerpnummer) 
                FROM VoorwerpInRubriek 
                WHERE rubrieknummer = r.Rubrieknummer) 
    END AS [nInRubriek], 
    CASE
       WHEN (SELECT Count(*) 
             FROM Rubriek 
             WHERE HoofdrubriekNr = r.rubriekNummer) IS NULL 
          THEN 0
          ELSE (SELECT Count(*) 
             FROM Rubriek 
             WHERE HoofdrubriekNr = r.rubriekNummer) 
    END AS [nSubrubrieken], 
    CASE 
       WHEN (SELECT Rubrieknaam 
             FROM Rubriek 
             WHERE Rubrieknummer = r.hoofdrubrieknr) IS NULL 
          THEN 'N.V.T.'
          ELSE (SELECT Rubrieknaam 
             FROM Rubriek 
             WHERE Rubrieknummer = r.hoofdrubrieknr)
    END AS [Hoofdrubrieknaam]
FROM 
    Rubriek r;

有人知道问题出在哪里吗?

提前致谢。

【问题讨论】:

MS Access 不支持case。另外,子查询中的count()不返回NULL,而是返回0 【参考方案1】:

是的。 CASE-ELSE 是 T-SQL。

在 Access SQL 中使用IIf(expression, true expression, false expression)

【讨论】:

谢谢你解决了这个问题。然而,它极大地影响了查询性能,所以我决定不在我的表单中使用它。这是我一直在寻找的问题的答案。【参考方案2】:

查询应如下所示:

SELECT r.Rubrieknaam, 
       (SELECT count(Voorwerpnummer) FROM VoorwerpInRubriek WHERE rubrieknummer = r.Rubrieknummer
       ) AS [nInRubriek], 
       (SELECT Count(*) FROM Rubriek WHERE HoofdrubriekNr = r.rubriekNummer
       )  AS [nSubrubrieken], 
       NZ(Rubrieknaam, "N.V.T.") AS [Hoofdrubrieknaam]
FROM Rubriek r;

甚至不需要条件逻辑。

【讨论】:

是的,我发现了这一点并将我的查询返回到原始查询(就像您发送的查询一样。)我收到一个关于无效数值的错误,让我认为 0 或 NULL 造成了问题.然而,问题是与我的数据库的连接出现错误并返回无效值。感谢您的帮助。

以上是关于MS Access Query 中的语法错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 中的 INSERT INTO 语法错误

从 MS-Access 中联合选择查询中的 SQLite 语法错误

MS ACCESS 中的表级验证表达式中的语法错误

“INSERT INTO 中的语法错误”ms-access vb.net [重复]

MySQL 语法错误 1064 与 MS Access 中的联合查询

在 MS Access 中的查询表达式中出现语法错误(缺少运算符)