如何解决MS Access SQL - 不同的记录和相关值的计数
我遇到了聚合查询的问题。我有两个表,MainA 和 MainC。我只想在 MainA 中选择唯一值,然后计算 MainC 中与这些值匹配的次数。我不关心(现在)在 MainC 中出现但不在 MainA 中的值。我有一个简单的表达式,主要是工作,它在这里:
SELECT disTINCT TBMainA.Field1,Count(TBMainC.MCField1) AS CountOfMCField1
FROM TBMainA
LEFT JOIN TBMainC ON TBMainA.Field1 = TBMainC.MCField1
GROUP BY TBMainA.Field1;
然而,问题是如果 MainA 中出现的值大于 value,则表达式会重复计算 MainC 中的值(推测是因为 MainA 中有两种情况要计算)。我怀疑这与我开始聚合的位置或我如何分组有关,但我已经在这个问题上敲了一下头,还没有产生一个可行的解决方案。以下是一些示例数据以及现在的查询输出(MAID 和 MCID 是每个表的键):
主A
MAID | Field1 |
---|---|
1 | 苹果 |
2 | 橘子 |
3 | 葡萄柚 |
4 | 辣椒 |
5 | 猕猴桃 |
6 | 西红柿 |
8 | 鳄梨 |
9 | 香蕉 |
10 | 苹果 |
主C
MCID | MCField1 |
---|---|
1 | 香蕉 |
2 | 辣椒 |
3 | 辣椒 |
4 | 西红柿 |
5 | 苹果 |
6 | 菠菜 |
7 | 羽衣甘蓝 |
8 | 苹果 |
9 | 橘子 |
Field1 | CountOfMCField1 |
---|---|
苹果 | 4 |
鳄梨 | 0 |
香蕉 | 1 |
葡萄柚 | 0 |
猕猴桃 | 0 |
橘子 | 1 |
辣椒 | 2 |
西红柿 | 1 |
欢迎提出建议,感谢您的帮助...!
解决方法
对于您的特定查询,计算 MCField1
的唯一值将是:
SELECT Field1,COUNT(MCField1) AS CountOfMCField1
FROM (SELECT DISTINCT TBMainA.Field1,TBMainC.MCField1
FROM TBMainA LEFT JOIN
TBMainC
ON TBMainA.Field1 = TBMainC.MCField1
) as AC
GROUP BY Field1;
如果你只是想统计出现的次数,那么:
SELECT TBMainA.Field1,COUNT(*)
FROM TBMainA LEFT JOIN
TBMainC
ON TBMainA.Field1 = TBMainC.MCField1
GROUP BY TBMainA.Field1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。