【发布时间】:2018-10-11 08:56:15
【问题描述】:
我有两个具有多对多关系的表(玩家和组)和一个联结表(player_group):
表“玩家”
表“玩家组”
一个玩家可以是多个组的一部分,一个组可以有多个玩家。用户也可以是组的管理员,由标志“flg_admin”表示。
我想构建一个查询,告诉我,对于特定玩家(假设 player1 的 id=27):
- 玩家所属组的名称;
- 玩家所属的每个组中的玩家数量;
- 如果玩家是每个组的管理员。
所以对于 player1 (ID=27),结果将是:
|group_name|no. members|flg_admin|
----------------------------------
|GROUP A | 2 | 1|
|GROUP B | 3 | 0|
我尝试了以下方法:
SELECT g.name, COUNT(x.id_player) as num_players, x.flg_admin
FROM player_group x
JOIN group g ON x.id_group=g.id
WHERE id_group IN (
SELECT
id_group
FROM player_group
WHERE id_player=27)
GROUP BY id_group;
但是通过这个查询我得到以下结果:
|group_name|no. members|flg_admin|
----------------------------------
|GROUP A | 2 | 1|
|GROUP B | 3 | 1|
GROUP B 的 flg_admin 设置为 1,但如上图所示,该玩家不是 GROUP B 的管理员。 我已经尝试了几个小时来解决这个问题,但我已经用尽了我的选择,我们将不胜感激任何有关此查询的帮助。
【问题讨论】:
标签: mysql sql many-to-many