내 중첩 세트 테이블은 다음과 같습니다.중첩 세트 모델이있는 데이터베이스에서 링크 웹 컨텐트를 어떻게 구합니까?
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의 백 엔드가됩니다. 그래서 내 생각에 당신은 카테고리와 관련된 고유 한 이름으로 새로운 페이지를 만들 수있었습니다. 제 경우에는 부서가 될 것입니다. 나는 주변을 둘러 보았고 ASP 클래식에 대한 CMS 측면에서 많은 선택권이 없다.
어떻게 수행 할 수 있습니까? 의견 및 제안도 환영합니다.
감사합니다.
솔루션을 게시하면 크게 감사하겠습니다. – Mike
트위터에 나를 때리고 뭔가를 보내 드리겠습니다. –