From: Masaru Sugawara <rk73@sea.plala.or.jp>
To: Janning Vygen <vygen@gmx.de>
Cc: pgsql-sql@postgresql.org
Subject: Re: Joining three data sources.
Date: Wed, 19 Jun 2002 23:09:02 +0900
Message-ID: <20020619230842.91E2.RK73@sea.plala.or.jp> (raw)
In-Reply-To: <200206191033.g5JAXnX19714@janning.planwerk6.local>
References: <200206191033.g5JAXnX19714@janning.planwerk6.local>
On Wed, 19 Jun 2002 12:33:47 +0200
Janning Vygen <vygen@gmx.de> wrote:
> ---------------------
> Result Inter Mailand vs. AC ROM 2:1
>
> How can i select all games with their results in a tabel like this:
> (i dont care about the team names. this is easy to achieve of course,
> my question is just about the goals)
>
> team1_id|team2_id|goals1|goals2
> 1 2 2 1
How about something like this:
SELECT go1.game_id, go1.team1_id, go1.team2_id,
SUM(CASE WHEN go2.team_id = go1.team1_id
THEN go2.n ELSE 0 END) AS goals1,
SUM(CASE WHEN go2.team_id = go1.team2_id
THEN go2.n ELSE 0 END) AS goals2
FROM (SELECT game_id,
min(team_id) AS team1_id,
max(team_id) AS team2_id
FROM goal
GROUP BY 1) AS go1,
(SELECT game_id, team_id, count(*) AS n
FROM goal
GROUP BY 1, 2) AS go2
WHERE go1.game_id = go2.game_id
GROUP BY 1, 2, 3;
P.S.
As for Goal table, if it has a large number of the rows, you maybe
need to create a unique index on it.
CREATE UNIQUE INDEX idx_goal ON goal(game_id, team_id, minute);
Regards,
Masaru Sugawara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: rk73@sea.plala.or.jp, vygen@gmx.de
Subject: Re: Joining three data sources.
In-Reply-To: <20020619230842.91E2.RK73@sea.plala.or.jp>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox