PostgreSQL中如何从关联专用表查询同名字段并关联对应人员姓名
实现思路
你需要对Person表做两次别名关联,分别匹配志愿者ID和主管医师ID,即可同时取出两者的姓名:
- 第一次关联
Person表匹配志愿者ID,取出志愿者姓名 - 先通过志愿者表的
IDSupervisor关联Physician表,再第二次关联Person表匹配主管医师ID,取出主管姓名
对应PostgreSQL查询语句
SELECT v.IDVolunteer, p1.name AS "Name", v.IDSupervisor, p2.name AS "Name" FROM Volunteer v -- 关联拿志愿者姓名 INNER JOIN Person p1 ON v.IDVolunteer = p1.IDPerson -- 关联主管医师表 INNER JOIN Physician phy ON v.IDSupervisor = phy.IDPhysician -- 关联拿主管姓名 INNER JOIN Person p2 ON phy.IDPhysician = p2.IDPerson;
补充说明
如果存在没有分配主管的志愿者,需要保留这些志愿者的记录,只需要把对应主管关联的INNER JOIN改为LEFT JOIN即可。
内容的提问来源于stack exchange,提问作者Dionisius Pratama
相关产品推荐
相关产品推荐

