需要使用mysql在表中查找父子关系

时间:2013-02-08 12:51:54

标签: mysql

假设我们有以下信息表

id  name  level   Parent_id
1   A     1       ---
2   B     1       ----
3   C     2       1
4   D     2       2
5   E     3       3
6   F     3       4
7   G     4       5
8   H     4       5

我想要这种格式的结果。

id  L1Name   L2 Name  L3 Name  L4Name
1   A        -        -        -
2   B        -        -        -    
3   A        C        -        -
4   B        D        -        -    
5   A        C        E        -
6   B        D        F        -
7   A        C        E        G
8   A        C        E        H

我希望这个结果在mysql中。我们可以通过使用Connect by prior在oracle中找到它。在mysql.please帮助中怎么样。

1 个答案:

答案 0 :(得分:1)

你可能正在寻找这个

     select id , L1Name,   L2Name , L3Name , L4Name
     from (
         select id ,
         if(level =1 , name , '--') L1Name ,
         if(level =2 , name , '--') L2Name ,
         if(level =3 , name , '--') L3Name ,
         if(level =4 , name , '--') L4Name 
         from Table1
         )t

DEMO HERE

编辑:

试试这个

 SELECT id, L1Name,   L2Name , L3Name , L4Name
 FROM (
     SELECT id,
     IF(id in(1,3,5,7), 'A' , 'B') L1Name ,
     IF(id in(3,5,7) , 'C' , if(id in(1,2), '-', 'D')) L2Name ,
     IF(id in(5,7),'E',if(id in(1,2,3,4), '-', 'F')) L3Name ,
     IF(id =7 , 'G' , if(id in(1,2,3,4,5,6), '-', 'H')) L4Name 
     FROM Table1
 )t

SQL DEMO HERE