使用简单的Sql查询显示房间并计算每个用户

时间:2016-01-21 18:40:29

标签: sql count

我想要实现的是这个

我有2张表table 1 = users table 2 = rooms

我尝试做的是获取所有房间的列表,但同时获得该特定房间中有多少用户。

桌子房间包含

id | name | description | limit

表用户包含

roomid | username | password 

最后我想要显示这样的东西

room 1 | description | numberofuser / limit

感谢您的帮助

目前我正在使用的是我在一段时间内重复查询但如果我有100个房间,那么每次我显示列表时它将进行100次SQL查询

3 个答案:

答案 0 :(得分:0)

首先使用GROUP BY获取计数,然后执行JOIN

select r.name,
r.description,
xx.numberofuser_perRoom
from rooms r
join (select roomid, count(*) as numberofuser_perRoom
       from users
       group by roomid) xx on r.id = xx.roomid;

答案 1 :(得分:0)

你没有指定哪个数据库是那个,也没有想要看到空房间的行(我假设是),所以它看起来像这样:

SELECT r.name, r.description, COUNT(u.username) * 100. / r.limit 
FROM rooms r
LEFT JOIN users u ON u.roomid = r.id
GROUP BY r.name, r.description, r.limit

答案 2 :(得分:0)

我复制了你的数据库,这个查询有效。

    SELECT room.id, room.name,
        (SELECT COUNT(*) FROM user WHERE room.id=user.roomid)
AS "Occupancy"
  FROM room;

注意:我的标准是对表(用户而不是用户)使用单数名称,我在用户表" roomid"中将我的密钥调到了房间,但当然可以使用你的。

结果如下:

id  Name        Occupancy   
1   PentHouse   4
2   basement    5
3   MeetingRoom 0

您可以为字段列表添加限制。我没有复制它。