分层父母子女关系。自己加入或联合或两者兼而有之?

时间:2017-03-16 14:18:44

标签: mysql sql join parent-child union

我有一个表格格式如下:

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

我不知道如何继续......任何帮助都会对如何进一步发展有所帮助?

1 个答案:

答案 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