에서 상위/하위 데이터베이스에서 각 ID에 대한 관련 데이터를 얻기I은 다음 표와 함께 작동 TSQL
-- USER TABLE --
User_ID | Manager_ID | Code
1 | null | ABC
2 | 1 | DEF
3 | 2 | HIJ
4 | null | ABC
나는 코드가 "소유"하는 경우 각 사용자에 대한 관련 코드를 알고 필요
여부 . 코드가 같은 행에있을 때 이와 관련된 코드는 사용자가 "소유"입니다
USER_ID = 1 : 소유 코드 = ABC
그러나 나는 또한에 대한 관련 코드를 알 필요가 각 사용자는 Manager_ID -> User_ID 계층 구조로 구성됩니다. 이 계층 구조에는 최대 깊이가 없습니다.
USER_ID = 1 : 관련 코드 =, 나는 다음과 같은 결과를 얻을 싶습니다 HIJ (USER_ID 2에 의해) 및 내 예에서
(USER_ID 3가) DEF
SELECT User_ID, Code, 1 as IsOwner
FROM User
: 소유 코드에 대한 User_ID | Code | IsOwner
1 | ABC | 1
1 | DEF | 0
1 | HIJ | 0
2 | DEF | 1
2 | HIJ | 0
3 | HIJ | 1
4 | ABC | 1
는 간단하다, 나는 다음과 같은 질문을했다
하지만 계층 구조에 대한 몇 가지 문제를 만났습니다. 인터넷에서 예제를 찾으려고했지만 "레벨"또는 "카운트"가있는 요청 만 볼 수 있으며 모든 관련 코드를 검색하는 방법을 알지 못합니다.
나는
USE MyBD
GO
WITH MyCTE (Manager_ID, User_ID, Code, IsOwned)
AS
(
SELECT Manager_ID, User_ID, Code, 1 as IsOwned
FROM User
WHERE Manager_ID IS NULL
UNION ALL
SELECT u.Manager_ID, u.User_ID, u.Code, 1 as IsOwned
FROM User AS u
INNER JOIN Managers AS d
ON u.Manager_ID = d.User_ID
)
SELECT Manager_ID, User_ID, Code, IsOwned
FROM Managers
GO
는 당신이 날 각 사용자 및 소유권과 관련된 모든 코드를 얻을 수 있도록 할 수 ... 공통 테이블 표현식을보고 같은 쿼리를 시도했지만 내가 뭔가를 놓친 것 같아?
최대 계층 구조가 있습니까? –
@ RaphaëlAlthaus 아니요 최대 깊이가 없습니다. 내 게시물을 편집합니다. – Alex