我编写了一个执行我想要的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
子句周围的括号。当我尝试重新打开查询时,由于查询在没有括号的情况下无效,我无法获取该表。此外,由于查询无效,我无法编辑SQL。
Q1:有什么方法可以阻止Access删除括号吗?
Q2:有关如何重新制定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,但是经常这样做很麻烦,我有很多类似的情况。
答案 0 :(得分:1)
试试这个:
SELECT
Tag.ID, Tag.Type,
NZ((SELECT COUNT(Cable.Type)
FROM Cable
WHERE Cable.Type = Tag.Type
AND Cable.Use = "KW"),0)
FROM Tag
答案 1 :(得分:0)
使用Nz函数解析空条目
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