On 15 Wrz, 09:56, andreas.kretsch...@schollglas.com ("A. Kretschmer") wrote: > In response to wstrzalka : > > > > > What I need is to join 2 tables > > > CREATE TABLE master( > > id INT4 > > ); > > > CREATE TABLE slave ( > > master_id INT4, > > rank INT4, > > value TEXT); > > > What I need is to make the query: > > > SELECT m.id, array_agg(s.value) AS my_problematic_array > > FROM master AS m LEFT JOIN slave AS s ON (m.id = s.master_id) > > GROUP BY m.id; > > Faster solution (compared to my other email): > > test=# select id, array_agg(value) from (SELECT m.id, s.value FROM > master AS m LEFT JOIN slave AS s ON (m.id = s.master_id) order by 1,2) > foo group by 1; > id | array_agg > ----+----------- > 1 | {3,5,7} > 2 | {NULL} > (2 rows) > > Andreas > -- > Andreas Kretschmer > Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) > > -- > Sent via pgsql-sql mailing list (pgsql-...@postgresql.org) > To make changes to your > subscription:http://www.postgresql.org/mailpref/pgsql-sql
Yes. And No :) The problem is that in original query the aggregate can be used more then once :/ So in fact it's like: SELECT m.id, array_agg(s1.value), array_agg(s2.value) FROM master AS m LEFT JOIN slave AS s1 ON (m.id = s1.master_id AND SOME_CONDITION_ON_S1) LEFT JOIN slave AS s2 ON (m.id = s2.master_id AND SOME_OTHER_CONDITION_ON_S1) GROUP BY m.id; -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql