我有一个查询,它将从我的医生表中获取Jobs_locum_hospital_ids,然后将其与id上的医院表连接并获取名称,然后将所有这些都放入数组中。
所以[187,123]
-> ("George Eliot Hospital - Acute Services"),("Good Hope Hospital")
select array_agg(t)
from (
select h.name from (select jsonb_array_elements_text(d.jobs_locum_hospital_ids)::int as id from doctor d
where d.id = 11720) as q1
left join hospital h on h.id = q1.id
)t
但这仅针对where d.id = 11720
执行
我想做的是对每一行执行此操作。因此,加入
select * from doctor
left join that thing above
答案 0 :(得分:0)
很难弄清楚您的数据结构或为什么要为此使用json函数。据我所知,医生有一系列的医院ID,而您想要这些名称:
select d.*,
(select array_agg(h.name)
from unnest(d.jobs_locum_hospital_ids) dh join
hospital h
on dh = h.id
) as hospital_names
from doctors;
您实际上想要执行此操作表明您确实想要一个连接表doctorHospitals
,每位医生和每家医院一行。