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; > > return the 'my_problematic_array' in order specified by slave.rank > > As you probably can guest I don't have any idea know how to do it :/
test=*# select * from master; id ---- 1 2 (2 rows) test=*# select * from slave; master_id | rank | value -----------+------+------- 1 | 5 | 5 1 | 3 | 3 1 | 7 | 7 (3 rows) test=*# select id, array_agg(unnest) from ( select id, unnest(my_problematic_array) from ( 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 ) foo order by 1,2 ) bar 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-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql