2017-03-16 88 views
0

我有以下格式的表:分层家长子女关系。自己加入还是工会或两者兼而有之?

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

您不需要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 
+0

哎,查询在result..only订货方面工作的伟大似乎很少problem..i'm得到的结果按以下顺序。 – goonernike

+0

我得到1.1.1 1.1.1 1.1.2 1.1.2第一,然后1.1 ...而它应该是另一种方式..任何解决方案呢? – goonernike

+0

试试这个:'通过rpad命令(Id,5,'.0')' –

相关问题