我想要实现的是这个
我有2张表table 1 = users
table 2 = rooms
我尝试做的是获取所有房间的列表,但同时获得该特定房间中有多少用户。
桌子房间包含
id | name | description | limit
表用户包含
roomid | username | password
最后我想要显示这样的东西
room 1 | description | numberofuser / limit
感谢您的帮助
目前我正在使用的是我在一段时间内重复查询但如果我有100个房间,那么每次我显示列表时它将进行100次SQL查询
答案 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
您可以为字段列表添加限制。我没有复制它。