php - MySQL 查询错误 COUNT

标签 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 

我有一张包含房间的表格和另一张 (room_players),它是用户和房间之间的匹配项。如果我删除 count(room_players.room)and room_players.room = rooms.id 我有我管理的房间。但我也需要同一个房间内的玩家数量。

最佳答案

您的查询需要一个分组依据。通过 select 中的 COUNT(),它变成了一个返回一行的聚合查询——表中所有行的汇总。

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;

我还将连接语法修复为显式连接并添加了表别名以使查询更具可读性。

编辑:

我怀疑你想要的查询是这样的:

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;

关于php - MySQL 查询错误 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796675/

相关文章:

php - 在面向对象的 PHP 中将类保存到数据库

MySQL - 在同一 SQL 的嵌套 SQL 语句中使用 select 字段值

mysql - 找到每个组合出现的平均金额

php - 这个 $_SERVER ['REQUEST_METHOD' ] === 'POST' 是做什么的?

mysql - 我知道 PIVOT 命令可以转换数据集,这是正确的方法吗?

php - 如何将 PHP 变量传递给 Laravel Blade 中的 Vue 组件实例?

php - MySQL多语言选择语言行的主语言行为空

php - codeigniter php 中的 CONCAT 和 UPDATE

sql - 从查询结果动态生成sql插入语句

php - explode textarea php(在新行)