2013-01-18 3 views
3

moduleid, name, parent_id의 3 개의 열이있는 tblmodules 테이블이 있습니다. parent_id 열은 다른 모듈의 값을 취합니다. 예 :Sql은 테이블에있는 모든 하위 항목을 가져옵니다.

내가 매개 변수로 저장 프로 시저에 조부모를 주면 모든 차일을 얻기 위해 저장 프로 시저를 구성 할
Moduleid  Name  Parentid 
--------  -----  -------- 
1   grandparent Null 
2   parent   1 
3   child   2 
4   childofChild 3 

. 위의 예에서는 (부모) 만 원하지 않지만 조부모에 속하기 때문에 자식과 childofchild를 원합니다. 어떤 도움 pls?

답변

3

당신은 recursive CTE

CREATE PROC YourProc 
@ModuleId INT 
AS 
    WITH R 
     AS (SELECT * 
      FROM YourTable 
      WHERE Moduleid = @ModuleId 
      UNION ALL 
      SELECT Y.* 
      FROM YourTable Y 
        JOIN R 
         ON R.Moduleid = Y.Parentid) 
    SELECT * 
    FROM R 

SQL Fiddle

필요
관련 문제