【问题标题】:Count users and groups totals in one query在一个查询中计算用户和组总数
【发布时间】:2018-10-21 07:43:19
【问题描述】:

我对访问非常陌生,并且在查询时遇到困难。我的表(tblpacks)如下:

 id user_id group_id quota_id
 1    1        1       1
 2    1        2       1
 3    2        1       1
 4    3        1       1

理想情况下,我现在要获取 quota_id=1 的唯一用户和组的数量

结果将是:

       total_users = 3
       total_groups = 2

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    如果你只想计算一个字段,可以通过一个简单的solution,但由于你想计算2个单独的字段,实际上你至少需要2个单独的查询。

    我的答案是使用 UNION 查询作为计数源。此 UNION 查询返回不同的 user_id 值(Nullgroup_id)和不同的 group_id 值(Nulluser_id)。我省略了 DISTINCT 关键字,因为 UNION(没有 ALL)会自动执行 DISTINCT 查询。由于在 UNION 查询的第一个 SELECT 语句中使用常量 Null 字段时无法正确识别的数据类型,我添加了第三个 SELECT 语句作为第一个,它从表中选择两个字段但不返回任何记录:

    SELECT Count(user_id) AS total_users, Count(group_id) AS total_groups
    FROM (
      SELECT user_id, group_id FROM tblpacks WHERE Yes=No
      UNION
      SELECT user_id, Null FROM tblpacks WHERE quota_id=1
      UNION
      SELECT Null, group_id FROM tblpacks WHERE quota_id=1
    ) AS qsub;
    

    【讨论】:

    • 只需将其重写为 null as group_id / null as client_id 以避免第一个 Yes=No 查询,它会产生相同的结果,而且速度也不错。谢谢凯斯
    • 欢迎您,并且很高兴知道在没有 Yes=No 查询的情况下进行计数。我单独测试了 UNION 查询并没有看到 group_id 值,这就是我添加该辅助查询的原因。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多