涉及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)?
非常感谢任何帮助?
答案 0 :(得分:1)
您应该使用此查询,其中此示例中的4是集合中的玩家计数(P1,P2,P3,P4)。如果该团队中的所有玩家都参加了此TeamId计数(PlayerID)=该集合中所有玩家的计数:
select teamId
from Player_Team
where PlayerId in (P1_Id,P2_ID,P3_ID,P4_ID)
group by teamId
having count(PlayerId) = 4
答案 1 :(得分:0)
我正在尝试实现非常相似的东西,我认为上述解决方案的问题在于,如果你有
T3 P1
T3 P2
T3 P3
T3 P5
它仍将出现在结果集中。