Giả sử bạn có bảng dữ liệu với cấu trúc như sau:
ID
|
Code
|
ParentID
|
Name
|
1
|
01
|
Parent node 01
|
|
2
|
0101
|
1
|
Child 01
|
3
|
0102
|
1
|
Child 02
|
4
|
010201
|
3
|
Child 01 of Child 02
|
5
|
010202
|
3
|
Child 02 of Child 02
|
6
|
02
|
Parent node 02
|
|
7
|
0201
|
4
|
Child 03
|
8
|
0202
|
4
|
Child 04
|
Và vì một lý do nào đó bạn muốn có đường dẫn để sắp xếp cây hay làm một điều gì đó như kết quả dưới đây:
ID
|
Code
|
ParentID
|
Name
|
PathTree
|
Level
|
Leaf
|
1
|
01
|
Parent node 01
|
1
|
1
|
0
|
|
2
|
0101
|
1
|
Child 01
|
1.2
|
2
|
1
|
3
|
0102
|
1
|
Child 02
|
1.3
|
2
|
0
|
4
|
010201
|
3
|
Child 01 of Child 02
|
1.3.4
|
3
|
1
|
5
|
010202
|
3
|
Child 02 of Child 02
|
1.3.5
|
3
|
1
|
6
|
02
|
Parent node 02
|
6
|
1
|
0
|
|
7
|
0201
|
4
|
Child 03
|
6.7
|
2
|
1
|
8
|
0202
|
4
|
Child 04
|
6.8
|
2
|
1
|
Bạn ghép đoạn query này nhé:
SELECT ID, Code, ParentID, Name ,Bạn có thể thay dấu '.' bằng một ký tự khác hợp lệ nhé. :)
LTRIM(SYS_CONNECT_BY_PATH(ID,'.'),'.')) AS PathTree,
LEVEL, CONNECT_BY_ISLEAF AS LEAF
FROM TableName
START WITH ParentID IS NULL CONNECT BY ParentID = PRIOR ID
ORDER BY PathTree;
0 nhận xét:
Đăng nhận xét