SQL生成幻想联盟时间表

时间:2014-01-02 07:46:28

标签: sql sql-server tsql

我正在试图找出解决这个问题的最佳方法,我遇到了一些麻烦...我想要做的就是编写一个SQL脚本来为一个联盟创建一个可以联合起来的时间表。有一个变量(但事先已知)团队数量和变量(但事先已知)数周。

我有一个如下的架构(为了这个问题而简化)

表:团队

team_id   int
team_name varchar(50)

表:FantasyWeeks

week_id    int
start_date datetime
end_date   datetime

表:FantasyMatches

match_id      int
home_team_id  int
away_team_id  int
week_id       int  (FK FantasyWeeks.week_id)

例如,如果有6支球队(每周3场比赛)和12周,最终会产生36场比赛,每支球队至少两次与其他球队比赛,并且其他2支球队3次参赛 - 其中团队'离开','家'需要交替。

我已尝试用CROSS JOIN和CURSOR做一些事情,但它还没有产生预期的效果。有任何想法吗?我确信我可以在C#中处理这个问题没问题,但如果可能的话我想在数据库中使用SQL。

EDIT: Here is a sample schedule for week 1:

Home Team: Team 1 vs. Away Team: Team 2
Home Team: Team 3 vs. Away Team: Team 4
Home Team: Team 5 vs. Away Team: Team 6

Week 2 would be something like this:

Home Team: Team 1 vs. Away Team: Team 3
Home Team: Team 2 vs. Away Team: Team 5
Home Team: Team 4 vs. Away Team: Team 6

1 个答案:

答案 0 :(得分:0)

由于这样的时间表可能有多种可能性,因此您必须首先考虑一般化的时间表。如果你有一个(如你所知,你可以用C#编写程序),你应该在这里发布。

当然你可以写一个STORED PROCEDURE,因为这是他们首先要做的。我不认为可以通过简单的SQL查询来完成。