Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询错误计数_Php_Mysql_Sql_Database - Fatal编程技术网

Php MySQL查询错误计数

Php MySQL查询错误计数,php,mysql,sql,database,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 administrat

我正在开发一个应用程序。我必须查询我是客人或管理员的房间。那很容易。问题是我想同时得到同一房间里的球员人数

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 

我有一张桌子,上面有房间和其他房间播放器,这是用户和房间之间的匹配。如果我删除countroom_players.room和room_players.room=rooms.id,我就拥有我管理的房间。但是我也需要同一房间内的玩家数量。

从总用户数中减去管理员的数量如何?

从总用户数中减去管理员的数量如何?

您的查询需要一个分组。使用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;
我还将联接语法固定为显式联接,并添加了表别名以使查询更具可读性

编辑:

我怀疑您想要的查询类似于:

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;
您的查询需要一个分组依据。使用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;
我还将联接语法固定为显式联接,并添加了表别名以使查询更具可读性

编辑:

我怀疑您想要的查询类似于:

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;

使用GROUP BY或甚至“宇宙禁止”,在不同的表中为相同的字段命名不会有任何伤害。使用GROUP BY或甚至“宇宙禁止”,在不同的表中为相同的字段命名不会有任何伤害。它确实有效。非常感谢。我试图加入两个查询,但没有成功,我不知道为什么。我喜欢你的方式,它更容易理解。但我有一个问题,如果我想得到的房间,我不是管理员唯一的客人,它不算很好的球员人数在房间里。@miguelpveloso。我不知道什么是管理员。如果是room_players中的一列,则您可以通过以下方式删除组的位置和后面:让sumadministrator=1>0。选择r.id、r.name、r.buyin、r.administrator、r.creation_date、r.max_players、r.min_players、countrp.room或加入room_players rp ON rp.room=r.id where administrator!=1和rp.user=1组(按r.id);这可能吗?这并没有告诉我房间里有多少人,这确实有效。非常感谢。我试图加入两个查询,但没有成功,我不知道为什么。我喜欢你的方式,它更容易理解。但我有一个问题,如果我想得到的房间,我不是管理员唯一的客人,它不算很好的球员人数在房间里。@miguelpveloso。我不知道什么是管理员。如果是room_players中的一列,则您可以通过以下方式删除组的位置和后面:让sumadministrator=1>0。选择r.id、r.name、r.buyin、r.administrator、r.creation_date、r.max_players、r.min_players、countrp.room或加入room_players rp ON rp.room=r.id where administrator!=1和rp.user=1组(按r.id);这可能吗?这并没有告诉我房间里有多少人。