From: | "A(dot) Kretschmer" <andreas(dot)kretschmer(at)schollglas(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Subqueries or Joins? Problems with multiple table query |
Date: | 2010-02-23 12:10:42 |
Message-ID: | 20100223121042.GA20866@a-kretschmer.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
In response to Stefan Schwarzer :
> Hi there,
>
> gush, shouldn't be that complicated. But neither in Postgres, nor in Access I
> succeed in getting the result I wish.
>
> I have a couple of times for the Environmental Conventions (Kyoto, Montreal,
> CITES etc.). They look like this:
>
> id_country,year,value
> 4,1992,0
> 4,1993,0
> 4,1994,0
> 4,1995,0
> 4,1996,1
> 4,1997,0
> 4,1998,0
> 4,1999,0
> 4,2000,0
>
> so that I can see the year where the treaty has been ratified by a country.
> (The rows with the zero values seems to be unnecessary, I have to check that
> again with the data supplier.)
>
> Now, I would like to have a list of all (european) countries and the treaties
> they have signed, in the following style:
>
> country_name,year_kyoto,signed_kyoto,year_montreal,signed_montreal,....
> Germany 1996 1 1992
> 1 ....
> France 1995 1 1994
> 1 ...
>
> Again, the field with the "signed_..." is not necessary, but I just want to be
> sure that the query is running correctly.
>
> I tried it with subqueries - something like this:
Not sure if i understand you corrently, if not, provide more information
(table structure and data), if possible copy&paste - able.
Okay, let me try:
test=*# select * from country ;
id | name
----+---------
1 | germany
2 | use
3 | france
(3 rows)
test=*# select * from conventions ;
id_country | convention | year
------------+------------+------
1 | Kyoto | 1996
1 | Montreal | 2002
2 | Kyoto | 1998
(3 rows)
test=*# select c.name, sum(case when c2.convention='Kyoto' then c2.year
else null end) as kyoto, sum(case when c2.convention='Montreal' then
c2.year else null end) as montreal from country c left join conventions
c2 on c.id=c2.id_country group by c.name;
name | kyoto | montreal
---------+-------+----------
germany | 1996 | 2002
use | 1998 |
france | |
(3 rows)
(i know, silly and wrong data, only for example)
Regards, Andreas
--
Andreas Kretschmer
Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
GnuPG: 0x31720C99, 1006 CCB4 A326 1D42 6431 2EB0 389D 1DC2 3172 0C99
From | Date | Subject | |
---|---|---|---|
Next Message | Alban Hertroys | 2010-02-23 12:19:13 | Re: Alternative to UPDATE (As COPY to INSERT) |
Previous Message | Richard Huxton | 2010-02-23 11:55:15 | Re: Minor systax error but not able to resolve it... |