1

我有三张桌子

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。 我被卡住的地方是我真的希望能够计算每个用户的会话数。

我试过了...

选择 u.idUser, u.Username, COUNT(s.idSession) 作为 SessionCount

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

我需要做一个嵌套的 SELECT 语句吗?我不确定如何编写查询。

非常感谢任何帮助。

大号

4

2 回答 2

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 
于 2013-09-02T18:39:13.877 回答
1

I believe it would be better to use Group by along with the above

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 
于 2013-09-02T18:51:18.727 回答