MySQL 可能的团队对战,其中一名球员可以参加多支球队
MySQL possible team vs. team matches where one player can be part of multiple teams
我在数据库中的是球员和球队。
一个玩家可以加入多个团队,如下面 table 所述:
player_id | team_id
1 | 1
2 | 1
2 | 2
2 | 3
3 | 2
3 | 3
4 | 4
5 | 4
6 | 5
7 | 5
我想要实现的是 table 显示可能的团队对团队比赛。并非所有比赛都是可能的,因为玩家不能与自己对战。
示例:
- 第 1 队对第 2 队(不可能,因为球员 2 在两队中)
- 第 1 队对第 3 队(不可能,因为球员 2 在两队中)
- 第 1 队对第 4 队(可能)
结果 table 可能如下所示:
Home | Away
1 | 4
4 | 1
1 | 5
5 | 1
5 | 2
5 | 3
5 | 4
2 | 5
3 | 5
4 | 5
我试过使用 SELF JOIN 但没有成功:
SELECT A.team_id AS team_home, B.team_id AS team_away
FROM players_teams A, players_teams B
WHERE A.team_id <> B.team_id AND A.player_id <> B.player_id
我认为这就是你想要的:
select t1.team_id home, t2.team_id away
from players_team t1
inner join players_team t2 on t2.team_id <> t1.team_id
group by t1.team_id, t2.team_id
having max(t1.player_id = t2.player_id) = 0
我在数据库中的是球员和球队。
一个玩家可以加入多个团队,如下面 table 所述:
player_id | team_id
1 | 1
2 | 1
2 | 2
2 | 3
3 | 2
3 | 3
4 | 4
5 | 4
6 | 5
7 | 5
我想要实现的是 table 显示可能的团队对团队比赛。并非所有比赛都是可能的,因为玩家不能与自己对战。
示例:
- 第 1 队对第 2 队(不可能,因为球员 2 在两队中)
- 第 1 队对第 3 队(不可能,因为球员 2 在两队中)
- 第 1 队对第 4 队(可能)
结果 table 可能如下所示:
Home | Away
1 | 4
4 | 1
1 | 5
5 | 1
5 | 2
5 | 3
5 | 4
2 | 5
3 | 5
4 | 5
我试过使用 SELF JOIN 但没有成功:
SELECT A.team_id AS team_home, B.team_id AS team_away
FROM players_teams A, players_teams B
WHERE A.team_id <> B.team_id AND A.player_id <> B.player_id
我认为这就是你想要的:
select t1.team_id home, t2.team_id away
from players_team t1
inner join players_team t2 on t2.team_id <> t1.team_id
group by t1.team_id, t2.team_id
having max(t1.player_id = t2.player_id) = 0