create TABLE Categories(
id SERIAL PRIMARY KEY ,
p_id INTEGER,
name VARCHAR(32),
position INTEGER
)
INSERT INTO Categories(id,p_id,name,position) VALUES
(1, 0, '',1),
(2, 1, 'Child 1',2),
(3, 1, 'Child 2',2),
(4, 2, 'Deep child',3),
(5, 1, 'Deep child',2),
(6, 4, 'Deep child',4),
(7, 4, 'Deep child',4),
(8, 4, 'Deep child',4),
(9, 8, 'Deep child',5),
(10, 8, 'Deep child',5),
(11, 8, 'Deep child',5),
(12, 8, 'Deep child',5),
(13, 11, 'Deep child',6),
(14, 11, 'Deep child',6),
(15, 11, 'Deep child',6),
(16, 14, 'Deep child',7),
(17, 14, 'Deep child',7),
(18, 17, 'Deep child',8),
(19, 17, 'Deep child',8),
(20, 17, 'Deep child',8),
(21, 15, 'Deep child',7),
(22, 15, 'Deep child',7),
(23, 15, 'Deep child',7);
SELECT * from Categories;
----------------
--id,p_id,name,position----
1;0;"";1
2;1;"Child 1";2
3;1;"Child 2";2
4;2;"Deep child";3
5;1;"Deep child";2
6;4;"Deep child";4
7;4;"Deep child";4
8;4;"Deep child";4
9;8;"Deep child";5
10;8;"Deep child";5
11;8;"Deep child";5
12;8;"Deep child";5
13;11;"Deep child";6
14;11;"Deep child";6
15;11;"Deep child";6
16;14;"Deep child";7
17;14;"Deep child";7