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获取权限很重要。TeamIdTeams
玩家的 SOLO 团队由
select fkTeamId from PlayersInTeams where
fkPlayerId=1 HAVING count(fkTeamId)=1;
不,这不对!!但我不明白为什么。
我想说:
从
fkPlayerId=1 的 PlayersInTeams 中获取 fkTeamId,而且
具有此特定 fkTeamId 的行数正好为 1。
查询返回(空集),实际上如果我将 HAVING 子句更改为不正确(HAVING count(fkTeamId)<>1;),它会返回我想要的行。