【问题标题】:Display multiple count values on joined tables在连接表上显示多个计数值
【发布时间】:2014-08-12 20:36:11
【问题描述】:

我正在尝试计算 2 个表中存在的用户 ID, 我还对 userID 上的表进行了内部联接,以便我可以根据另一个表中的 BadgeID 搜索一个表的计数。 到目前为止,它返回一个表的用户计数,但我似乎无法弄清楚如何在两个表上返回用户 ID 的计数,有什么建议吗?

   SELECT DISTINCT live_event.usid, COUNT(1) AS membercount 
   FROM live_event
   INNER JOIN member_badges ON live_event.usid = member_badges.usid
   WHERE bdgid = 14

【问题讨论】:

  • 您使用的是什么数据库? (我猜mysql只是因为它会运行这样的聚合查询并返回错误的数据而不是错误)。你读过 group by 语句的目的吗?
  • 请提供样本数据和期望的结果。我不确定你真正想要什么。
  • 现在它返回 live_event 表的总 usid 计数,我还希望它显示 member_badges 表的 usid 总计数

标签: sql


【解决方案1】:

不确定您在寻找什么;但根据我的理解,子查询可能是您想要走的路线吗?

    select
        (select count(*) from firsttable where userid = {userid})
    as count1,
        (select count(*) from secondtable where userid = {userid})
    as count2

{userid} 将是您的 bdgid。

【讨论】:

    【解决方案2】:

    尝试使用union select连接两个表的结果

    select useid, count(*) from (
    select useid from firsttable
    union select useid from second table ) group by useid
    

    【讨论】:

      【解决方案3】:

      试试这个:

      SELECT
        user_id,
        COALESCE(MAX(
          CASE
            when tbl_name='live_event' then cnt_records
            else null
          END), 0) as cnt_live_event,
        COALESCE(MAX(CASE
              when tbl_name='member_badges' then cnt_records
              else null
            END), 0) as cnt_member_badges
      FROM
      (
        SELECT
          'live_event' AS tbl_name,
          usid as user_id,
          count(*) AS cnt_records
        FROM live_event
        GROUP BY 'live_event', usid
        UNION
        SELECT
          'member_badges',
          usid as user_id,
          count(*)
        FROM member_badges
        GROUP BY 'member_badges', usid
      ) grouped_counts
      GROUP BY user_id
      ORDER BY user_id;
      

      即使usid 仅出现在其中一个表中,上述查询也会为您提供用户计数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多