1

涉及3个数据库表。

球员

P1
P2
P3
P4
P5
.....

团队

T1
T2
T3
T4
T5
....

Player_Team

T1     P1
T1     P2
T1     P3
T1     P4
T2     P1
T2     P2
T2     P3
......

考虑到 no 的多种组合。的玩家。此外,一名球员可以在多个球队

Ex. (P1 P2 P3 P4), (P1 P2 P3), (P1 P2), (P1 P3), (P2 P3) .. so on

在我的应用程序中,我让一组球员作为一个团队参加特定比赛。鉴于这一套,我想找到他们所属的共同团队。即使他们在多个团队中,仅包含这组玩家的团队也将是唯一的。所以在上面的例子中,只有一个球队有球员 P1 P2 P3 和 P4。但是如果团队只有 3 个玩家 P1 P2 P3,那么我们就有不止一个共同的团队。因为,我们可能有组合 T1(P1 P2 P3 P4) T2(P1 P2 P3)。当然,我们不应该计算 T1,因为它有 P4,但是我们应该怎么做呢?

那么您能否提出一种方法(SQL 查询或程序逻辑)来轻松高效地完成此任务?是否有任何 sql 函数来获取通用团队名称(即 T2)?

任何帮助是极大的赞赏 ?

4

2 回答 2

1

您应该使用此查询,其中本示例中的 4 是集合 (P1,P2,P3,P4) 中的玩家计数。如果此团队中的所有玩家,那么对于此 TeamId 计数(玩家 ID)= 集合中所有玩家的计数:

select teamId 
from Player_Team 
where PlayerId in (P1_Id,P2_ID,P3_ID,P4_ID)
group by  teamId
having count(PlayerId) = 4
于 2012-08-23T05:53:47.723 回答
0

我正在尝试实现非常相似的东西,我认为上述解决方案的问题是,如果你有
T3 P1
T3 P2
T3 P3
T3 P5
它仍然会出现在结果集中。

于 2013-11-25T23:11:30.450 回答