【发布时间】:2018-02-21 10:38:34
【问题描述】:
我正在尝试在 MS Access 2013 中编写查询,但左连接无法正常工作。它就像一个正常的连接。
这就是我想要做的。
我的第一个表 [All Category Types] 有一个列 [Category Types]。然后,我尝试将其加入到其中包含两个聚合字段的查询中。虚拟表[Average by Category Type]首先按所有者分组,然后按[Category Type]分组。接下来是一个总和字段[CountOfIncident: Number]。
结果我想要的是表[All Category Types] 中的每个项目,然后是正确的[CountOfIncident: Number] where Owner == "France"。这不能用作左连接。它只向我显示[All Category Types] 中在[Average by Category Type] 中具有匹配记录的值。
如果我从这个表中删除所有者,并且只按[Category Type] 分组,它就可以正常工作。在 group by 子句中是否有多个字段不允许查询上的左连接正常工作?
SELECT [All Category Types].[Category Type],
[Average by Category Type].[CountOfIncident: Number]
FROM [All Category Types]
LEFT JOIN [Average by Category Type]
ON [All Category Types].[Category Type] = [Average by Category Type].[Category Type]
WHERE ((([Average by Category Type].Owner)="France"));
谢谢。
【问题讨论】:
-
我的 5c:当列包含空格并且必须转义时,我发现查询的可读性较差。为什么不简单地
SELECT all_category_types.category_type?当涉及多个表时,我还发现查询的可读性较差,但没有使用表别名(例如SELECT ct.category_type)。我还发现带有很多多余括号的查询可读性较差。为什么不简单地WHERE [Average by Category Type].Owner = "France"?最后,我宁愿尽可能使用标准 SQL。这将是字符串文字的单引号:= 'France'. -
@philipxy 该副本是 MySQL,虽然原因相同,但 Access 在与常量连接时需要括号,这是造成混淆的常见原因,此处也进行了讨论。我认为这个问题足够明确。
-
@ErikA 这个问题被问了一遍又一遍。您是否在 Access 下搜索过它?此外,它不依赖于 SQL 的任何特定于 DBMS 的方面。这些解释通过吸引运营商的属性来明确这一点。所以它是重复的。
标签: sql ms-access ms-access-2013