Моя таблица вложенных множеств выглядит следующим образом.
create table depts (
id int identity(0, 1) primary key
, lft int
, rgt int
, name nvarchar(60)
, abbrv nvarchar(20)
);
Испытательные отделы.
insert into depts (lft, rgt, name, abbrv) values (1, 14, 'root', 'r');
insert into depts (lft, rgt, name, abbrv) values (2, 3, 'department 1', 'd1');
insert into depts (lft, rgt, name, abbrv) values (4, 5, 'department 2', 'd2');
insert into depts (lft, rgt, name, abbrv) values (6, 13, 'department 3', 'd3');
insert into depts (lft, rgt, name, abbrv) values (7, 8, 'sub department 3.1', 'd3.1');
insert into depts (lft, rgt, name, abbrv) values (9, 12, 'sub department 3.2', 'd3.2');
insert into depts (lft, rgt, name, abbrv) values (10, 11, 'sub sub department 3.2.1', 'd3.2.1');
Моя таблица веб-контента выглядит следующим образом.
create table content (
id int identity(0, 1)
, dept_id int
, page_name nvarchar(60)
, content ntext
);
Содержание теста.
insert into content (dept_id, page_name, content)
values (3, 'index', '<h2>welcome to department 3!</h2>');
insert into content (dept_id, page_name, content)
values (4, 'index', '<h2>welcome to department 3.1!</h2>');
insert into content (dept_id, page_name, content)
values (6, 'index', '<h2>welcome to department 3.2.1!</h2>');
insert into content (dept_id, page_name, content)
values (2, 'what-doing', '<h2>what is department 2 doing?/h2>');
Я пытаюсь запросить правильное содержимое страницы (из таблицы содержимого) на основе указанного URL. Я могу легко выполнить эту задачу с корневым отделом. Однако запросить отдел с несколькими глубинами оказывается немного сложнее. Например:
http://localhost/departments.asp?d3/ (Should return <h2>welcome to department 3!</h2>)
http://localhost/departments.asp?d2/what-doing (Should return <h2>what is department 2 doing?</h2>)
Я не уверен, может ли это быть создано в одном запросе или понадобится какая-то рекурсивная функция. Кроме того, если после последней / нет ничего, предположим, что мы хотим индексную страницу.
В основном это будет бэкэнд маленькой CMS. Поэтому я подумал, что вы можете создавать новые страницы с уникальным именем, связанным с категорией. Который в моем случае был бы департаментом. Я осмотрелся, и с точки зрения CMS для ASP Classic вариантов не так уж много.
Как это можно сделать? Комментарии и предложения также приветствуются.
Спасибо.