Teams
在这种情况下,我有 3 个表: Players
和PlayersInTeams
。
APlayer
只是一个注册用户。没有 W/L 数据与Player
.
ATeam
维护赢/输记录。如果一个玩家是自己玩,那么他会和他的“单人”团队一起玩(Team
只有那个玩家在里面)。每次 Bob 和 Jan 一起获胜时,他们的Team
参赛作品都会获得胜利++。每次 Jason 和 Tommy 一起输掉比赛时,他们的 Team entry 都会输掉++。
该PlayersInTeams
表只有 2 列,它是 和 之间的交集Players
表Teams
:
> desc PlayersInTeams ;
+------------+---------+
| Field | Type |
+------------+---------+
| fkPlayerId | int(11) |
| fkTeamId | int(11) |
+------------+---------+
所以这是困难的部分:
因为 aPlayer
可以是 multiple 的一部分,所以在匹配开始时从表中Teams
获取权限很重要。TeamId
Teams
玩家的 SOLO 团队由
select fkTeamId from PlayersInTeams where
fkPlayerId=1 HAVING count(fkTeamId)=1;
不,这不对!!但我不明白为什么。
我想说:
从
fkPlayerId=1 的 PlayersInTeams 中获取 fkTeamId,而且
具有此特定 fkTeamId 的行数正好为 1。
查询返回(空集),实际上如果我将 HAVING 子句更改为不正确(HAVING count(fkTeamId)<>1;
),它会返回我想要的行。