Get data from different tables indexed by same ID
Well, you can aggregate the rows into arrays:

select p.person_id, p.name, 
       array_agg(cc) as contracts,
       array_agg(pl) as plants
from people p
  left join car_contracts cc on p.person_id = cc.person_id
  left join plants pl on p.person_id = pl.person_id
group by p.person_id;


(This assumes that person_id is declared as the primary key)

Aggregating the rows into json values might be easier to work with in the front end:

select p.person_id, p.name, 
       json_agg(to_jsonb(cc)) as contracts,
       jsong_agg(to_jsonb(pl)) as plants
from people p
  left join car_contracts cc on p.person_id = cc.person_id
  left join plants pl on p.person_id = pl.person_id
group by p.person_id;


To avoid duplicates, do the aggregation in a derived table:

select p.person_id, p.name, 
       cc.contracts,
       pl.plants
from people p
  left join (
    select person_id, jsonb_agg(to_jsonb(c)) as contracts
    from car_contracts c
    group by person_id
  ) cc on p.person_id = cc.person_id
  left join (
    select person_id, jsonb_agg(to_jsonb(p)
    from plants 
    group by person_id
  ) pl on p.person_id = pl.person_id;