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 中联合选择查询中的 SQLite 语法错误
“INSERT INTO 中的语法错误”ms-access vb.net [重复]