sql - MS Access COUNT 与 INNER JOIN
问题描述
遇到一个涉及 MS ACCESS DB 和两个表的问题,试图通过计数获得两个不同的记录结果。
我正在使用的两个表都有一个主键字段以及一个包含 1 或 0 的字段来标记记录是否已被标记为删除。
问题是我无法从该查询中获取总计数和差异,我只能检索所有记录的计数,而不仅仅是未标记为删除的记录。
示例类别有两个与之关联的内容记录,但一个在删除字段中有 1,另一个有 0。我正在尝试获取数据。
我尝试使用 SUM,但这样做时收到来自 MS ACCESS 的错误。这是我在下面使用的当前查询字符串。
澄清一下,这样做的原因是,一旦我从记录集中取回数据,我就可以获得两个结果并在客户端处理差异。
一个类别可能有多个内容,并且与每个类别相关联的一些内容可能有一些记录被标记为删除,而另一些则可能没有。
下面是我正在使用的 SQL。
Count(CONTENT.contentId) as cntDifference SUM(CASE WHEN cntDifference = 1
then 1 else 0) has also not proven to be successful.
SELECT CATEGORY.categoryId, CATEGORY.categoryTitle, CATEGORY.categoryDate,
Count(CONTENT.contentId) AS cntTotal, Last(CONTENT.contentDate) AS cntDate,
CATEGORY.isDeleted AS catDel
FROM CATEGORY
LEFT JOIN CONTENT ON CATEGORY.categoryId = CONTENT.categoryId
GROUP BY CATEGORY.categoryId, CATEGORY.categoryTitle,
CATEGORY.categoryDate, CATEGORY.userLevel, CATEGORY.isDeleted HAVING
(((CATEGORY.isDeleted)=0))
ORDER BY CATEGORY.categoryTitle
解决方案
HAVING (((CATEGORY.isDeleted)=0))
过滤掉已删除的记录,因此您的未删除计数与所有记录计数相同。
要获取已删除/未删除的计数,请将其删除并使用:
SUM(IIF(CATEGORY.isDeleted=0,1,0)) AS CountOfNonDeleted
对于未删除
和
SUM(IIF(CATEGORY.isDeleted=1,1,0)) AS CountOfDeleted
为删除。您还可以使用这些表达式来获取总数、已删除和未删除计数之间的差异。
推荐阅读
- spring-boot - Spring Boot - 创建泛型存储库
- html - 如何更改标题背景颜色?
- cordova - CordovaError:无法执行 shell 命令“getprop,dev.bootcomplete
- wordpress - 如何在 woo commerce 存档页面上添加数量字段,当我添加或减去产品时,它会自动更新购物车
- c++ - 生成 normal_distribution 时 std::random 中的错误?
- rust - 为什么初始化向量的向量(Vec
>) 期望 T 而不是 Vec ? - c# - 在运行时从文件创建具有纹理的材质
- c# - 我可以将 Visual Studio 设置为卸载所有项目,而不是选择 1 个项目并仅递归加载其依赖项吗?
- python - 如何改回ASCII码
- java - 在运行时加载编译的类