teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

推敲

2020/06/14 02:09

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,4 @@
1
- 「特定階層の名称」~~については1階層分の自己結合で何とかなりますが~~、「階層レベル2の名称」は階層の上限を決めてその階層数分の自己結合を行う必要があり、階層の上限を設定で行うような場合には、動的SQLが必要になります。
1
+ 「特定階層の名称」、「階層レベル2の名称」は階層の上限を決めてその階層数分の自己結合を行う必要があり、階層の上限を設定で行うような場合には、動的SQLが必要になります。
2
2
 
3
3
  こういった階層構造には**再帰**を使用すると便利です。
4
4
 

2

訂正

2020/06/14 02:09

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,4 @@
1
- 「特定階層の名称」については1階層分の自己結合で何とかなりますが、「階層レベル2の名称」は階層の上限を決めてその階層数分の自己結合を行う必要があり、階層の上限を設定で行うような場合には、動的SQLが必要になります。
1
+ 「特定階層の名称」~~については1階層分の自己結合で何とかなりますが~~、「階層レベル2の名称」は階層の上限を決めてその階層数分の自己結合を行う必要があり、階層の上限を設定で行うような場合には、動的SQLが必要になります。
2
2
 
3
3
  こういった階層構造には**再帰**を使用すると便利です。
4
4
 

1

修正

2020/06/12 14:53

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -14,8 +14,8 @@
14
14
  from tbl where 親ID is null
15
15
  union all
16
16
  select vtbl.階層レベル+1
17
- , case when vtbl.フラグ=1 then vtbl.名称 end
17
+ , case when vtbl.フラグ=1 then vtbl.名称 else vtbl.特定階層の名称 end
18
- , case when vtbl.階層レベル=1 then tbl.名称 else 階層レベル2の名称 end
18
+ , case when vtbl.階層レベル=1 then tbl.名称 else vtbl.階層レベル2の名称 end
19
19
  , tbl.id, tbl.名称, tbl.親ID, tbl.フラグ
20
20
  from vtbl inner join tbl
21
21
  on vtbl.id=tbl.親ID