Mig*_*oso 1 php mysql sql database
我正在开发一款应用.我必须查询我在哪里看到我是客人或管理员的房间.这很简单.问题是我想同时获得同一房间内的玩家数量.
SELECT rooms.id, rooms.name, rooms.buyin, rooms.administrator, rooms.creation_date,
rooms.max_players, rooms.min_players, count(room_players.room)
FROM rooms, room_players
WHERE administrator = 1 and room_players.room = rooms.id
Run Code Online (Sandbox Code Playgroud)
我有一个房间的桌子和另一个(room_players),用户和房间之间的匹配.如果我删除了count(room_players.room),and room_players.room = rooms.id我有我管理的房间.但我也需要同一房间内的玩家数量.
您的查询需要一个group by.使用COUNT()in select,它成为一个返回一行的聚合查询 - 表中所有行的摘要.
SELECT r.id, r.name, r.buyin, r.administrator, r.creation_date,
r.max_players, r.min_players, count(rp.room)
FROM rooms r join
room_players rp
ON rp.room = r.id
WHERE administrator = 1
GROUP BY r.id;
Run Code Online (Sandbox Code Playgroud)
我还将连接语法修复为显式连接并添加了表别名以使查询更具可读性.
编辑:
我怀疑你想要的查询是这样的:
SELECT r.id, r.name, r.buyin, r.administrator, r.creation_date,
r.max_players, r.min_players, count(rp.room)
FROM rooms r join
room_players rp
ON rp.room = r.id
WHERE administrator <> 1
GROUP BY r.id
HAVING sum(user = 1) > 0;
Run Code Online (Sandbox Code Playgroud)