sql-基于id获取父值

sql-基于id获取父值,sql,Sql,我有一个名为employee的表 employee表字段和示例值 -------------------------------- id name parentid -------------------------------- 1 suresh null -------------------------------- 2 ram 1 -------------------------------- 3 ravi

我有一个名为employee的表

employee表字段和示例值

-------------------------------- id name parentid -------------------------------- 1 suresh null -------------------------------- 2 ram 1 -------------------------------- 3 ravi 2 -------------------------------- 4 raju 3 -------------------------------- -------------------------------- id名称parentid -------------------------------- 1 suresh空值 -------------------------------- 2 ram 1 -------------------------------- 3拉维2 -------------------------------- 4拉朱3 -------------------------------- 在这里,我需要为给定的id值获取当前、父级和父级值的name字段值。我需要的输出如下

假设输入id为4,则我的预期输出为

name parentName grandParentName ----------------------------------------- raju ravi ram ----------------------------------------- 姓名父母姓名祖父母姓名 ----------------------------------------- 拉朱·拉维·拉姆 ----------------------------------------- 我如何编写此查询?

给你

select e1.name, e2.name as parentName, e3.name as grandParentName
from employee e1
left join employee e2 on e1.parentId = e2.id
left join employee e3 on e2.parentId = e3.id

where e1.id = 4
给你

select e1.name, e2.name as parentName, e3.name as grandParentName
from employee e1
left join employee e2 on e1.parentId = e2.id
left join employee e3 on e2.parentId = e3.id

where e1.id = 4

好问题!这是测试和工作

select my.`name`, p.`name` as 'parent name', gp.`name` as 'grandparent name'
from employee my 
left outer join employee p on p.id=my.parentid 
left outer join employee gp on gp.id = p.parentid
where my.`id`=4

好问题!这是测试和工作

select my.`name`, p.`name` as 'parent name', gp.`name` as 'grandparent name'
from employee my 
left outer join employee p on p.id=my.parentid 
left outer join employee gp on gp.id = p.parentid
where my.`id`=4

如果parentId为null,您不需要使用左连接来避免丢失“parent”吗?我不认为“左连接”会起作用。但是“左外连接”会。嗯。。。左连接和左外连接是一样的。我站在正确的位置。在mysql中,左连接和左外连接实际上是相同的。如果parentId为null,您不需要使用左连接来避免丢失“parent”吗?我不认为“左连接”会起作用。但是“左外连接”会。嗯。。。左连接和左外连接是一样的。我站在正确的位置。在mysql中,左连接和左外连接实际上是相同的。