我有一个表格格式如下:
sid sname pid pname ppid pdetail
1.1 ABC 1.1.1 UVW 1.1.1.1 XSXXSX....
1.1 ABC 1.1.1 UVW 1.1.1.2 VDSVS...
1.1 ABC 1.1.2 DEF 1.1.2.1 DSVSDSD..
1.1 ABC 1.1.2 DEF 1.1.2.2 SVSDV...
1.2 XYZ 1.2.1 LMN 1.2.1.1 DFSDSD..
1.2 XYZ 1.2.2 GGF 1.2.2.1 CDSSS...
依旧......
我需要以下列格式获得结果..
Id Detail Parentid ppid pdetail
1.1 ABC NULL 1.1.1.1 XSXXSX..
1.1.1 UVW 1.1 .. ...
1.1.1 UVW 1.1 .. ..
1.1.2 DEF 1.1 .. ..
1.1.2 DEF 1.1
1.2 LMN NULL
1.2.1 LMN 1.2
1.2.2 GGF 1.2
我不知道如何继续......任何帮助都会对如何进一步发展有所帮助?
答案 0 :(得分:0)
您不需要self join
,因为您想要的有关父级的所有信息都已可用。您所要做的就是union
:
select *
from (
select pid as Id, pname as Detail, sid as ParentId, ppid, pdetail
from table
union all
select sid, sname, null, ppid, pdetail
from table
)
order by Id