Thanks for your great response Travis.  This is exactly what I was after.

On Thu, Aug 26, 2010 at 6:56 PM, Travis Ard <travis_...@hotmail.com> wrote:

> I don't think there's anything inherently wrong with the way you've
> designed
> your table to store your match data.  I don't have experience designing
> these kinds of applications, so maybe some others might have better advice
> for you.  If you find your reporting is too slow or it is too awkward to
> query this table twice and union the results, then you might want to add a
> summary table.
>
> -Travis
>
> -----Original Message-----
> From: Tompkins Neil [mailto:neil.tompk...@googlemail.com]
> Sent: Wednesday, August 25, 2010 2:06 PM
> To: Travis Ard
> Cc: [MySQL]
> Subject: Re: Calculating table standings
>
> Travis
>
> Do you think it would be better if I stored the information in
> a separate table, rather than using unions etc - to make the searching,
> counting etc easier ?  Or is this method a standard way of dealing with
> this
> sort of data.
>
> Cheers
> Neil
>
> On Tue, Aug 24, 2010 at 5:43 PM, Travis Ard <travis_...@hotmail.com>
> wrote:
>
> > I think your match table has all the information necessary to display the
> > results you want.  Since each record contains data for two teams (home
> and
> > away), you'd probably need to select each separately and union the
> results
> > together before summarizing.  Your query might look something like the
> > following:
> >
> > select
> >    seasons_id
> >    ,team_id
> >    ,count(*) as games_played
> >    ,sum(home) as home_games_played
> >    ,sum(away) as away_games_played
> >    ,sum(won_home) as won_home
> >    ,sum(draw_home) as draw_home
> >    ,sum(lost_home) as lost_home
> >    ,sum(scored_home) as scored_home
> >    ,sum(conceded_home) as conceded_home
> >    ,sum(won_away) as won_away
> >    ,sum(draw_away) as draw_away
> >    ,sum(lost_away) as lost_away
> >    ,sum(scored_away) as scored_away
> >    ,sum(conceded_away) as conceded_away
> > from
> > (select
> >    seasons_id
> >    ,home_team_id as team_id
> >    ,1 as home
> >    ,0 as away
> >    ,if(home_goals > away_goals, 1, 0) as won_home
> >    ,if(home_goals = away_goals, 1, 0) as draw_home
> >    ,if(home_goals < away_goals, 1, 0) as lost_home
> >    ,home_goals as scored_home
> >    ,away_goals as conceded_home
> >    ,0 as won_away
> >    ,0 as draw_away
> >    ,0 as lost_away
> >    ,0 as scored_away
> >    ,0 as conceded_away
> > from matches
> > union all
> > select
> >    seasons_id
> >    ,away_team_id as team_id
> >    ,0 as home
> >    ,1 as away
> >    ,0 as won_home
> >    ,0 as draw_home
> >    ,0 as lost_home
> >    ,0 as scored_home
> >    ,0 as conceded_home
> >    ,if(away_goals > home_goals, 1, 0) as won_away
> >    ,if(away_goals = home_goals, 1, 0) as draw_away
> >    ,if(away_goals < home_goals, 1, 0) as lost_away
> >    ,away_goals as scored_away
> >    ,home_goals as conceded_away
> > from matches) s1
> > group by seasons_id, team_id;
> >
> > -----Original Message-----
> > From: Tompkins Neil [mailto:neil.tompk...@googlemail.com]
> > Sent: Tuesday, August 24, 2010 7:45 AM
> > To: [MySQL]
> > Subject: Calculating table standings
> >
> > Hi,
> >
> > I wondered if anyone can offer me some help with regards the following
> > issue
> > I'm having.  Basically, I've the following table structure containing
> rows
> > of results between two football teams.  The fields are
> >
> > match_id
> > seasons_id
> > week_number
> > home_team_id
> > away_team_id
> > home_goals
> > away_goals
> >
> > Based on the above information, I'm wanting to generate a league table
> > listing showing
> >
> > games_played
> > won_home
> > draw_home
> > lost_home
> > scored_home
> > conceded_home
> > won_away
> > draw_away
> > lost_away
> > scored_away
> > conceded_away
> >
> > Finally I also want a tally for the number of points e.g 3 points for
> win,
> > 1
> > point for a draw.  Do you think this is possible with the basic table I
> > have, or should I consider putting the result data in a leagues table
> > working out the fields I have listed above, and then just calculating it
> > and
> > display it ?
> >
> > Thanks for any advice.
> >
> > Cheers
> > Neil
> >
> >
>
>

Reply via email to