2013-03-13 3 views
0

현재 데이터베이스로 FamilyTree를 구축 중입니다. familytree를 기반으로 출력물을 작성하는 쿼리를 찾았으나 약간의 추가 기능이 필요합니다. 하지만 솔직히 말해서 시작해야 할 부분이 없습니다. 역 추적 FamilyTree SQL

가계도 출력

여기에서 볼 수있다 : http://data.stackexchange.com/stackoverflow/query/84004/family-tree-sql-query

그래서 내 질문은 내가 사람의 hierachy에서 "오래된"사람을 역 추적하려면, 무엇을 내가해야합니까?

Fx : ID 8은 어느 아버지가 최상위입니까? > 5 - - 8> 4 -> 1

+1

http://sqlfiddle.com에 예를 추가하는 것이 좋습니다 것. 스택 익스체인지 데이터 익스플로러는 스택 익스체인지 데이터 익스포트를 쿼리하기위한 것이다. – squillman

+0

미래의 질문으로 알려드립니다 :) – Behrens

답변

2

내가 CTE와 함께 할 제안 :

출력을 읽고, 나는 대답은 1 알 수 있습니다. 이런 식으로 뭔가가 작동합니다 :

WITH SearchHierarchy AS (
    SELECT ID, Name, FatherID, 0 AS Level 
    FROM FamilyTree 
    WHERE ID = 8 
    UNION ALL 
    SELECT a.ID, a.Name, a.FatherID, Level + 1 
    FROM FamilyTree a 
    INNER JOIN SearchHierarchy b ON a.ID = b.FatherID 
    ) 
SELECT TOP 1 ID, Name 
FROM SearchHierarchy 
ORDER BY LEVEL DESC 

을 작업 데모의 경우 : On SQLFiddle

+0

Perfect! 감사 :) – Behrens