我正在试图找出解决这个问题的最佳方法,我遇到了一些麻烦...我想要做的就是编写一个SQL脚本来为一个联盟创建一个可以联合起来的时间表。有一个变量(但事先已知)团队数量和变量(但事先已知)数周。
我有一个如下的架构(为了这个问题而简化)
team_id int
team_name varchar(50)
week_id int
start_date datetime
end_date datetime
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
答案 0 :(得分:0)
由于这样的时间表可能有多种可能性,因此您必须首先考虑一般化的时间表。如果你有一个(如你所知,你可以用C#编写程序),你应该在这里发布。
当然你可以写一个STORED PROCEDURE,因为这是他们首先要做的。我不认为可以通过简单的SQL查询来完成。