Author |
Topic |
robcpettit
Starting Member
11 Posts |
Posted - 2013-09-10 : 11:06:32
|
I have to typical table of football results,date, hometeam, awayteam, htresult, atresult. I would like to know if it possible to add two further columns that, (this is hard to explain),..at the start of the season each team is allocated 20 points. Before a match is played the hometeam minuses the awayteams allocated points. When the the match is played points are added to the allocated points depending on the outcome. eg team1 v team2, first game so match points = 0,team1 wins so team1 points are now 21, team2 19. team1 v team2 again so match points now 2. Is there away of doing this on the fly with a table to show the match points and possible the teams overall points. I can do regards robert |
|
James K
Master Smack Fu Yak Hacker
3873 Posts |
Posted - 2013-09-10 : 12:31:09
|
quote: Originally posted by robcpettit I have to typical table of football results,date, hometeam, awayteam, htresult, atresult. I would like to know if it possible to add two further columns that, (this is hard to explain),..at the start of the season each team is allocated 20 points. Before a match is played the hometeam minuses the awayteams allocated points. When the the match is played points are added to the allocated points depending on the outcome. eg team1 v team2, first game so match points = 0,team1 wins so team1 points are now 21, team2 19. team1 v team2 again so match points now 2. Is there away of doing this on the fly with a table to show the match points and possible the teams overall points. I can do regards robert
I must admit I didn't follow your explanation. But, seems like based on the number of games won/lost, each team gets points given to them or taken away. If that is the case, it should be possible to do."Before a match is played the hometeam minuses the awayteams allocated points" What does this mean? And also this: "team1 v team2 again so match points now 2" |
|
|
robcpettit
Starting Member
11 Posts |
Posted - 2013-09-10 : 14:31:51
|
thankyou for your reply. It is like that to a degree. The important part and the the bit i cant seem to do is that before the match is played, hometeam needs to deduct/takeaway awayteam points(prev points). I thinking about using either a second table or temp table with the team names and a column for my points starting a 20, then loop through my results 1 row at a time referencing the team table to calculate the points for win, loose or draw. Sounds messy.Regards Robert |
|
|
bitsmed
Aged Yak Warrior
545 Posts |
Posted - 2013-09-10 : 18:18:26
|
Well, I'm not sure, I quiet understand the point system described here, but this is my attempt (bare in mind, this is not guaranteed to Work if a team play twice on the same day):create table #football_results (date date,hometeam varchar(10),awayteam varchar(10),htresults int,atresults int,hmatch int,amatch int);insert into #football_results (date,hometeam,awayteam,htresults,atresults,hmatch,amatch) values ('01-01-2013','team1','team2',2,1,null,null) ,('01-01-2013','team3','team4',0,1,null,null) ,('02-01-2013','team1','team3',0,0,null,null) ,('03-01-2013','team4','team1',1,3,null,null) ,('03-01-2013','team3','team2',1,1,null,null) ,('04-01-2013','team1','team4',0,1,null,null) ,('05-01-2013','team3','team1',2,0,null,null) ,('06-01-2013','team2','team4',3,1,null,null) ,('07-01-2013','team4','team2',2,3,null,null) ,('08-01-2013','team2','team1',1,1,null,null) ,('09-01-2013','team4','team3',0,1,null,null) ,('10-01-2013','team2','team3',1,2,null,null);select distinct team ,20 as points into #team_points from (select hometeam as team from #football_results union all select awayteam as team from #football_results ) as a;declare @rowcount int,@row int;select @rowcount=count(*) from #football_results;set @row=0;while @row<@rowcountbegin set @row+=1; update b set b.hmatch=c.points ,b.amatch=d.points from (select row_number() over (order by date,hometeam,awayteam) as row ,date ,hometeam ,awayteam from #football_results ) as a inner join #football_results as b on b.date=a.date and b.hometeam=a.hometeam and b.awayteam=a.awayteam inner join #team_points as c on c.team=b.hometeam inner join #team_points as d on d.team=b.awayteam where a.row=@row ; update c set c.points=c.points +case when b.hmatch=b.amatch then 1 else abs(b.hmatch-b.amatch) end *case when b.htresults<b.atresults then -1 when b.htresults>b.atresults then 1 else 0 end from (select row_number() over (order by date,hometeam,awayteam) as row ,date ,hometeam ,awayteam from #football_results ) as a inner join #football_results as b on b.date=a.date and b.hometeam=a.hometeam and b.awayteam=a.awayteam inner join #team_points as c on c.team=b.hometeam where a.row=@row ; update c set c.points=c.points +case when b.hmatch=b.amatch then 1 else abs(b.hmatch-b.amatch) end *case when b.htresults>b.atresults then -1 when b.htresults<b.atresults then 1 else 0 end from (select row_number() over (order by date,hometeam,awayteam) as row ,date ,hometeam ,awayteam from #football_results ) as a inner join #football_results as b on b.date=a.date and b.hometeam=a.hometeam and b.awayteam=a.awayteam inner join #team_points as c on c.team=b.awayteam where a.row=@row ;end;select * from #football_results order by date;select * from #team_points order by team;drop table #team_points;drop table #football_results; ps: Yeah, I know it's ugly, but it seems to do the job :-) |
|
|
robcpettit
Starting Member
11 Posts |
Posted - 2013-09-12 : 13:45:42
|
Thankyou for your reply and taking the the time to type up the code. As a beginner there lots here for me to learn from. Very much appreciated.Regards Robert |
|
|
|
|
|