반응형
Ant_U
DBA 개미
Ant_U
전체 방문자
오늘
어제
  • 분류 전체보기 (262) N
    • AWS (3)
    • C# (1)
    • SQL (236) N
      • MYSQL (186) N
      • MSSQL (50)
    • 자격증 (20)
      • SQLD (12)
      • SQLP (8)

인기 글

최근 글

250x250
hELLO · Designed By 정상우.
Ant_U

DBA 개미

[MSSQL] IsDescendantOf 사용 방법 및 예시
SQL/MSSQL

[MSSQL] IsDescendantOf 사용 방법 및 예시

2024. 4. 23. 12:17
728x90
반응형

SQL Server의 `IsDescendantOf` 함수는 계층적인 데이터를 다룰 때 사용되는 함수 중 하나입니다. 이 함수는 두 개의 계층적인 값 사이의 부모-자식 관계를 확인합니다. 보통 이 함수는 `HierarchyID` 데이터 형식과 함께 사용됩니다.

`IsDescendantOf` 함수의 사용법은 다음과 같습니다:

IsDescendantOf ( parent_hierarchyid :: hierarchyid , child_hierarchyid :: hierarchyid )



여기서:

- `parent_hierarchyid`는 부모 노드를 나타내는 `HierarchyID` 값입니다.
- `child_hierarchyid`는 자식 노드를 나타내는 `HierarchyID` 값입니다.

이 함수는 두 `HierarchyID` 값 사이의 부모-자식 관계를 확인하고, 자식이 부모의 하위 노드인 경우 1을 반환하고, 그렇지 않으면 0을 반환합니다.

예를 들어, 다음과 같은 테이블이 있다고 가정해봅시다:

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    EmployeeName NVARCHAR(100),
    EmployeeHierarchy HIERARCHYID
);



여기서 `EmployeeHierarchy`는 계층적 데이터를 나타내는 `HierarchyID` 값입니다. 이제 몇 가지 예시를 통해 `IsDescendantOf` 함수를 설명해보겠습니다:

1. 부모-자식 관계 확인:

DECLARE @parentHierarchy HIERARCHYID;
DECLARE @childHierarchy HIERARCHYID;

-- 부모와 자식 노드 설정
SELECT @parentHierarchy = EmployeeHierarchy 
FROM Employees 
WHERE EmployeeID = 1; -- 부모 노드

SELECT @childHierarchy = EmployeeHierarchy 
FROM Employees 
WHERE EmployeeID = 2; -- 자식 노드

-- IsDescendantOf 함수 사용
IF (IsDescendantOf(@parentHierarchy, @childHierarchy) = 1)
    PRINT '자식은 부모의 하위 노드입니다.';
ELSE
    PRINT '자식은 부모의 하위 노드가 아닙니다.';


이 경우 자식 노드가 부모 노드의 하위 노드이므로 "자식은 부모의 하위 노드입니다."가 출력됩니다.


2. 부모-자식 관계가 아닌 경우 확인:

DECLARE @parentHierarchy HIERARCHYID;
DECLARE @childHierarchy HIERARCHYID;

-- 부모와 자식 노드 설정
SELECT @parentHierarchy = EmployeeHierarchy 
FROM Employees 
WHERE EmployeeID = 1; -- 부모 노드

SELECT @childHierarchy = EmployeeHierarchy 
FROM Employees 
WHERE EmployeeID = 3; -- 다른 부모 노드의 자식 노드

-- IsDescendantOf 함수 사용
IF (IsDescendantOf(@parentHierarchy, @childHierarchy) = 1)
    PRINT '자식은 부모의 하위 노드입니다.';
ELSE
    PRINT '자식은 부모의 하위 노드가 아닙니다.';


이 경우 자식 노드가 다른 부모 노드의 하위 노드가 아니므로 "자식은 부모의 하위 노드가 아닙니다."가 출력됩니다.

728x90
반응형

'SQL > MSSQL' 카테고리의 다른 글

[MSSQL] GetReparentedValue 사용 방법 및 예시  (0) 2024.04.23
[MSSQL] GetRoot 사용 방법 및 예시  (1) 2024.04.22
[MSSQL] GetLevel 사용 방법 및 예시  (0) 2024.04.22
[MSSQL] GetDescendant 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] GetAncestor 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] hierarchyid 메서드 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] smalldatetime 사용 방법 및 예시  (0) 2024.04.09
[MSSQL] datetimeoffset 사용 방법 및 예시  (0) 2024.04.09
    'SQL/MSSQL' 카테고리의 다른 글
    • [MSSQL] GetReparentedValue 사용 방법 및 예시
    • [MSSQL] GetRoot 사용 방법 및 예시
    • [MSSQL] GetLevel 사용 방법 및 예시
    • [MSSQL] GetDescendant 사용 방법 및 예시
    Ant_U
    Ant_U

    티스토리툴바