2011-11-08 2 views
1

우리는 계층 적보고 구조를 관리하는 응용 프로그램의 지원을 상속 받았습니다. 테이블 구조는 다음과 같습니다.계층의 SQL 관리

id_from, id_to, 활성, 값 .. 본질적으로 4 티어의 트리입니다.

의 예 존재 : 표에서

A B C D -> item q 
A B C E -> item r 
A B C F -> item s 
A B G H -> item t 

우리는 그래서 우리는 한 번만 각각의 고유 한 쌍을 들고

id_from, Id_to, active, Value 
    A B  Y  . 
    B C  Y  . 
    C D  Y  item q 
    C E  Y  item r 
    C F  Y  item s 
    B G  Y  . 
    G H  Y  item t 

을 누르고 있습니다. 구조체에 대해 프로그래밍 방식으로 많은 변경 사항을 실행해야하는 문제가 있습니다. 일 실시 것 :

A B C D -> item q 

가된다 :

A T C D -> item q 

그래서 데이터 세트가된다 :

A T C D -> item q 
A B C E -> item r 
A B C F -> item s 
A B G H -> item t 

따라서 테이블

id_from, Id_to, active, Value 
A T Y 
T C Y 
A B Y 
B C Y 
C D Y item q 
C E Y item r 
C F Y item s 
B G Y 
G H Y item t 

것이 있지만 당 예 : 이것은 c가 아닙니다. orrect는 트리가 여전히 A B C D와 A T C D의 링크를 생성합니다.

실제로 다른 C 값을 다른 것으로 변경해야합니다.

id_from, Id_to, active, Value 
A T Y 
T C Y 
A B Y 
B Cx Y 
C D Y item q 
Cx E Y item r 
Cx F Y item s 
B G Y 
G H Y item t 

이것은 우리가 보는 많은 문제 중 한 가지 예일뿐입니다. 그러나이 구조가 인식 된 모델인지 궁금합니다. 따라서 구조를 관리하기위한 일반적인 알고리즘을 제공 할 수있는 링크가 있습니다.

+0

나는 테이블을 가지고 이해를의 보고서 (ID, 값 1, 값 2, ...) 다른 관계를 가정 해 봅시다 (FromDataId, ToDataId) . 당신의 관계에는 왜 가치 란이 있습니까? –

+0

예제가 약간 혼란 스럽습니다! 나는 이것이 인정 된 모델이라고 생각하지 않는다! 그것은 중첩 된 세트 구조처럼 보입니다. – Daniel

+0

안녕하세요, '관계에 가치 열이있는 이유는 무엇입니까?'이것은 실제 구조의 매우 단순화 된 모델입니다. 전체 세부 정보를 설명하기가 어려울 수 있습니다. 그것을 관리하는 방법을 이해할 필요가 있습니다. – user641399

답변

1

시도 : Recursive Queries Using Common Table Expressions!

SQL Server의 가장 큰 특징 중 하나이며 SQL Server 2005 이후로 사용 가능합니다. 이것은 SQL Server의 계층 구조와 관련된 모든 것에 대한 필자의 고토입니다.

CTE를 쿼리의 구조는이 같은 간다 :

With <define derived table> 
<do ground level hierarchy query> 
join 
<all child elements>; 

use results and join with other tables, if needed