Access SQL left join - access删除括号

时间:2017-01-18 13:19:47

标签: 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子句周围的括号。当我尝试重新打开查询时,由于查询在没有括号的情况下无效,我无法获取该表。此外,由于查询无效,我无法编辑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,但是经常这样做很麻烦,我有很多类似的情况。

2 个答案:

答案 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