使用GROUPBY的Mysql连接查询

使用GROUPBY的Mysql连接查询,mysql,join,group-by,Mysql,Join,Group By,我正在尝试编写一个查询,该查询将返回 accesslog表中每个不同的用户id 每个用户标识访问站点时使用的不同ip地址数,也可以从accesslog表中获取 用户表中的该用户ID的名称、电子邮件地址和公司名称 我有1和2,但我不知道如何得到3。我承认,我在加入方面很差劲( 以下是我现在的疑问: SELECT DISTINCT userid, COUNT(ipaddress) AS c FROM accesslog WHERE url LIKE 'www.example.com%' and us

我正在尝试编写一个查询,该查询将返回

  • accesslog表中每个不同的用户id

  • 每个用户标识访问站点时使用的不同ip地址数,也可以从accesslog表中获取

  • 用户表中的该用户ID的名称、电子邮件地址和公司名称

  • 我有1和2,但我不知道如何得到3。我承认,我在加入方面很差劲(

    以下是我现在的疑问:

    SELECT DISTINCT userid, COUNT(ipaddress) AS c FROM accesslog WHERE url LIKE 'www.example.com%' and userid != '' GROUP BY userid ORDER BY c desc
    

    我如何将
    连接到我想要的其他数据块中?

    您需要连接到
    用户
    表,并将其所有列添加到
    分组依据

    SELECT a.userid, u.name, u.email, u.company, COUNT(a.ipaddress) AS c
      FROM accesslog a, USERS u
     WHERE a.userid = u.userid
       AND a.url LIKE 'www.example.com%'
       AND a.userid != ''
    GROUP BY a.userid
    ORDER BY c desc
    

    您需要加入到
    users
    表中,并将其所有列添加到
    groupby

    SELECT a.userid, u.name, u.email, u.company, COUNT(a.ipaddress) AS c
      FROM accesslog a, USERS u
     WHERE a.userid = u.userid
       AND a.url LIKE 'www.example.com%'
       AND a.userid != ''
    GROUP BY a.userid
    ORDER BY c desc
    

    我认为你不需要“DISTINCT”,因为“分组依据”应该处理这个问题。谢谢你的回答。如果我的数据库不是那么糟糕的话,它会起作用的。@BoltBait-你说得对;我刚刚复制/编辑了Ian的查询,但忘了删除它。我将进行编辑。我认为你不需要“DISTINCT”,因为“分组依据”应该处理这个问题。谢谢你的答案。如果我的数据库不是那么混乱的话,它会工作的。@BoltBait-你是对的;我刚刚复制/编辑了Ian的查询,但忘了删除它。我会编辑的。啊cr@p...刚刚记住,我的users表和accesslog表位于不同的数据库中,并且我没有访问根mysql用户的权限。因此我毕竟无法执行此查询..:(啊)cr@p...刚刚记住,我的users表和accesslog表位于不同的数据库中,并且我没有访问根mysql用户的权限。因此我毕竟无法执行此查询..:(