我正在尝试使用join和subquery从表中获取一些数据。我的情况是:我有一个表表ABC ,其结构如图所示
我需要身份证,姓名,父母姓名和配偶姓名(如果不是配偶的成员)。我尝试过的查询是:
SELECT E1.name AS memname,
E2.name AS parentname
FROM ABC AS E1
LEFT OUTER JOIN ABC AS E2 ON E2.id = E1.parent_id
where E1.relation != "Spouse"
此查询返回成员的id,名称和父名称的正确行。现在,我需要重写查询,以便在有成员的情况下也获得配偶的名字。预期输出为:
我尝试使用子查询来选择配偶名称,但这是错误的。谁能帮我这个?预先感谢
答案 0 :(得分:2)
您可以再进行一次自我加入以获得配偶的名字。
SELECT E1.name AS memname,
E2.name AS parentname,
E3.name AS spouse
FROM ABC AS E1
LEFT OUTER JOIN ABC AS E2 ON E2.id = E1.parent_id
LEFT OUTER JOIN ABC AS E3 ON E3.parent_id = E1.id AND
E3.relation = 'Spouse'
where E1.relation <> 'Spouse'