No MySQL, você pode agregar colunas em um único valor usando GROUP_CONCAT.
Você pode conseguir a mesma coisa no Postgres usando string_agg.
CREATE TABLE animal (
id serial primary key,
farm_id integer,
name varchar
);
INSERT INTO animal (farm_id, name) VALUES (1, 'cow'), (1, 'horse');
CREATE TABLE tool (
id serial primary key,
farm_id integer,
name varchar
);
INSERT INTO tool (farm_id, name) VALUES (1, 'hammer'), (1, 'spade'), (1, 'axe');
SELECT a.farm_id, string_agg(DISTINCT a.name, ',') as animals, string_agg(DISTINCT t.name, ',') as tools
FROM
animal a, tool t
WHERE a.farm_id = t.farm_id
GROUP BY a.farm_id;
Resultado:
FARM_ID ANIMALS TOOLS
1 cow,horse axe,hammer,spade
Você pode tentar por si mesmo em sqlfiddle: http://sqlfiddle.com/#!15/139a1/29/0