階層データの取得SQLを実地。
テーブル
列名 |
データ型 |
id |
int |
parent_id |
int |
name |
nvarchar(30) |
data_type |
int |
データ
id |
parent_id |
name |
data_type |
1 |
NULL |
メニュー1 |
0 |
2 |
1 |
メニュー1の1 |
0 |
3 |
1 |
メニュー1の2 |
0 |
4 |
NULL |
メニュー2 |
0 |
5 |
4 |
メニュー2の1 |
0 |
6 |
5 |
メニュー2の1の1 |
0 |
7 |
6 |
メニュー2の1の1 の1 |
0 |
1階層取得
select a.id, a.name from menu_1 as a where parenet_id is null
結果
2階層取得
select b.id, b.name from menu_1 as a
left join menu_1 as b on a.id = b.parenet_id
where
a.id = 1
結果
id |
name |
1 |
メニュー1の1 |
4 |
メニュー1の2 |
3階層取得
select
c.id, c.name
from menu_1 as a
left join menu_1 as b on b.parenet_id = a.id
left join menu_1 as c on c.parenet_id = b.id
where
a.id = 4
結果
4階層取得
select
d.id, d.name
from menu_1 as a
left join menu_1 as b on b.parenet_id = a.id
left join menu_1 as c on c.parenet_id = b.id
left join menu_1 as d on d.parenet_id = c.id
where
a.id = 4
結果