我有三张桌子
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语句?我不确定如何编写查询。
任何帮助都非常感激。
→
答案 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