【发布时间】:2017-09-27 05:38:00
【问题描述】:
我有一个用于在不同公司的团队之间生成匹配的数据库。
例子:
- A公司有团队:team1、team2、team3
- B 公司有团队:comp1、comp2
- C 公司有团队:companyc
- 公司 D 有团队:companyd1, companyd2
我必须生成球队之间的比赛,例如球队 1 不能与球队 2 一起比赛,因为是同一家公司。
我有这部分,但其他要求是他们可以连续比赛,例如如果第一场比赛是team1 vs comp1,第二场比赛应该是company c vs companyd。我怎样才能让同一支球队没有连续比赛?
这是我尝试的查询
select Cotejos.id_pelea, Partido1, Nombre1, Partido2, Nombre2,
ronda = ROW_NUMBER() OVER(partition by Partido1 order by Partido1)
from Cotejos
order by ronda, newid()
按 partido1 的顺序给我结果,但 partido 2 在同一个 ronda 中重复
例如,命令是这样的
Partido1 Nombre1 Partido2 Nombre2 ronda
----------- -------------------- ----------- -------------------- ----------
58 JJ Y LA ESTRELLA 2 1 AZTECA LAGUNA 3 1
123 LA JOYA 3 1 AZTECA LAGUNA 3 1
141 EL MILAGRO 2 1 AZTECA LAGUNA 1 1
2 GREGORIO GARCIA 3 CHICHO 1 1
5 GUARDADO 1 11 MA LUISA 2 1
119 GUARDADO 2 11 MA LUISA 3 1
14 RIELEROS Y CUMBRES 2 13 COMPADRES Y 28 DE OC 1
我喜欢这样的东西
Partido1 Nombre1 Partido2 Nombre2 ronda
----------- ----------- -------------------- ----------- -------------------
58 JJ Y LA ESTRELLA 2 1 AZTECA LAGUNA 3 1
2 GREGORIO GARCIA 3 CHICHO 1 1
5 GUARDADO 1 11 MA LUISA 2 1
123 LA JOYA 3 1 AZTECA LAGUNA 3 2
14 RIELEROS Y CUMBRES 2 13 COMPADRES Y 28 DE OC 2
119 GUARDADO 2 11 MA LUISA 3 2
141 EL MILAGRO 2 1 AZTECA LAGUNA 1 3
【问题讨论】:
-
请发表您尝试过的查询
-
一种选择是为公司内部的每个团队生成 row_number(),例如使用 newid(),然后将数据与行号完全外连接。您仍然必须以某种方式确保您首先选择拥有最多团队的公司,以便您可以获得所有可能存在的团队的匹配。
标签: sql-server database