Access SQL左联接-Access删除括号
我编写了一个SQL查询,可以实现我想要的功能:Access SQL左联接-Access删除括号,sql,ms-access,left-join,Sql,Ms Access,Left Join,我编写了一个SQL查询,可以实现我想要的功能: SELECT Tag.ID, Tag.Type, COUNT(Cable.Type) FROM Tag LEFT JOIN Cable ON (Cable.Type = Tag.Type AND Cable.Use = "KW") GROUP BY TagID, Tag.Type 问题是,保存时,MS Access会删除ON子句周围的括号。当我尝试重新打开查询时,我无法获取表,因为没有括号查询无法工作。
SELECT
Tag.ID, Tag.Type, COUNT(Cable.Type)
FROM
Tag
LEFT JOIN
Cable ON (Cable.Type = Tag.Type AND Cable.Use = "KW")
GROUP BY
TagID, Tag.Type
问题是,保存时,MS Access会删除ON
子句周围的括号。当我尝试重新打开查询时,我无法获取表,因为没有括号查询无法工作。此外,我无法编辑SQL,因为查询不起作用
问题1:我有没有办法阻止Access删除括号
问题2:关于如何重新格式化SQL以避免问题,有什么建议吗?我尝试了以下方法:
SELECT
Tag.ID, Tag.Type, COUNT(Cable.Type)
FROM
Tag
LEFT JOIN
Cable ON Cable.Type = Tag.Type
WHERE
Cable.Use = "KW" OR Cable.Use Is Null
GROUP BY
TagID, Tag.Type
但是,这会删除表“Tag”中的条目,而不匹配表“Cable”中的条目,我不会这样做;在这些情况下,我希望计数显示为“0”
我知道使用VBA强制带括号的sql查询进入Access是可能的,但经常这样做很麻烦,而且我有许多类似的情况。尝试以下方法:
SELECT
Tag.ID, Tag.Type,
NZ((SELECT COUNT(Cable.Type)
FROM Cable
WHERE Cable.Type = Tag.Type
AND Cable.Use = "KW"),0)
FROM Tag
使用函数解析空条目
SELECT Tag.ID, Tag.Type, nz(COUNT(Cable.Type),0)
FROM Tag LEFT JOIN Cable ON Cable.Type = Tag.Type
WHERE nz(Cable.Use,"KW") = "KW"
GROUP BY TagID, Tag.Type
您需要
或电缆。Use为Null
。当然,现在编辑。然而,这并不能解决问题。(我的“实际”查询“为空”,但我在这里编写了查询的简化版本)这比我的原始查询(在“ON”子句周围加括号)得到的结果要少,所以我假设这仍然忽略了“Tag”中的条目,而没有匹配“Cable”中的条目。很好,这很有效!非常感谢您的努力和时间!