MySql数据库使用内部联接选择计数(列)

时间:2013-09-02 18:37:07

标签: mysql count inner-join sql

我有三张桌子

USER :         idUser, Username
USERLOCATION : idUser, idLocation
SESSION :      idUser, idSession

我想要找到的是来自特定位置的所有用户,并计算他们拥有的会话数。我差点就在这个SQL

    SELECT  u.idUser, u.Username, s.idSession
      FROM  rempad.User u
INNER JOIN  rempad.UserLocation l ON u.idUser = l.idUser
INNER JOIN  rempad.Session s ON u.idUser = s.idUser
     WHERE  l.idLocation = 12

这将返回属于特定位置和所有会话ID的所有用户。 我被困的地方是我真的希望能够为每个用户计算会话次数。

我试过......

  

SELECT u.idUser,u.Username,COUNT(s.idSession)as SessionCount

但是这只返回一行并计算会话表中的所有会话,而不是计算属于该位置的每个用户的会话。

我是否需要执行嵌套的SELECT语句?我不确定如何编写查询。

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

试试这个: -

SELECT  u.idUser, u.Username, count(s.idSession) as x
      FROM  rempad.User u
INNER JOIN  rempad.UserLocation l ON u.idUser = l.idUser
INNER JOIN  rempad.Session s ON u.idUser = s.idUser
     WHERE  l.idLocation = 12
GROUP  BY u.iduser, 
      u.username 

答案 1 :(得分:1)

我认为最好使用Group by和上面的

SELECT u.iduser, 
       u.username, 
       Count(s.idsession) AS x 
FROM   USER u 
       INNER JOIN userlocation l 
               ON u.iduser = l.iduser 
       INNER JOIN session s 
               ON u.iduser = s.iduser 
WHERE  l.idlocation = 12 
GROUP  BY u.iduser, 
          u.username