-1

以下の情報を含むテーブルがあるとします。

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に必要です。これは、事前にConnectbyを使用してOracleで見つけることができます。mysqlでどうですか。助けてください。

4

1 に答える 1

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

デモはこちら

編集 :

これを試して

 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デモはこちら

于 2013-02-08T13:10:04.810 に答える