Изучите модель вложенных множеств для иерархий.У Джо Селко есть книга , которая охватывает это в дополнение к другим способам моделирования деревьев и иерархий в SQL.С моделью вложенного множества у вас будет что-то вроде этого:
CREATE TABLE Tree_Nodes
(
lft INT NOT NULL,
rgt INT NOT NULL,
name VARCHAR(40) NOT NULL,
CONSTRAINT PK_Tree_Nodes PRIMARY KEY CLUSTERED (lft, rgt)
)
INSERT INTO Tree_Nodes (lft, rgt, name)
SELECT 1, 6, 'Page 1' UNION ALL
SELECT 2, 5, 'Sub page 1' UNION ALL
SELECT 3, 4, 'Sub page 1 - 1' UNION ALL
SELECT 7, 8, 'Page 2' UNION ALL
SELECT 9, 16, 'Page 3' UNION ALL
SELECT 10, 15, 'Sub page 3' UNION ALL
SELECT 11, 12, 'Sub page 3 - 1' UNION ALL
SELECT 13, 14, 'Sub page 3 - 2'
Затем, чтобы получить результат, который вы пытаетесь получить, просто: