Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Access SQL左联接-Access删除括号_Sql_Ms Access_Left Join - Fatal编程技术网

Access SQL左联接-Access删除括号

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子句周围的括号。当我尝试重新打开查询时,我无法获取表,因为没有括号查询无法工作。

我编写了一个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,因为查询不起作用

问题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”中的条目。很好,这很有效!非常感谢您的努力和时间!