2014-01-23 1 views
0

검색했지만 찾지 못하는 것이 없습니다.SQL Server의 동일한 테이블 트리 테이블 쿼리

가 나는 SQL 서버 2005 데이터베이스 다음 표를 가지고 :

Parent  Child    Value 
----  --------   --------- 
America Mexico   8 
America Canada   1 
Asia  Japan    5 
Asia  Korea    7 
Europe  Spain    0 
Europe  Italy    2 
Africa  Zimbabwe   1 
Mexico  Baja California 0 
America USA    3 
USA  California  1 
USA  Texas    2 

부모와 자식이 기본 키입니다를 값 (IMO) 중요하지 않다. 나는 이런 식 결과보기를 만들 싶습니다 :

Parent  Child    Value 
----  --------   --------- 
America USA    3 
USA  California  1 
USA  Texas    2 

내가 미국을 검색 할 것이고, 그 결과는 다시 상관없이 그것이 얼마나 많은, 재귀가없는 모든 중첩 된 아이를 줄 것이다, I 이후 도시, 지역 등을 포함 할 수 있습니다.

필요한 것은 BOM 폭발이라고하는 것과 유사합니다. 여기

+0

원하는 행이 3 개나 다른 행이 여러 개 있습니까? –

+0

나는 여러 행을 버렸고, 그 3 행은 예를 들어 미국과 미국의 모든 아이들을 원한다면 결과 집합이다. – user3225819

답변

0

당신이 그것을 할 수있는 방법은 다음과 같습니다

with cte as (
     select parent, child 
     from t 
     union all 
     select cte.parent, t.child 
     from cte join 
      t 
      on cte.child = t.parent 
    ) 
select cte.* 
from cte 
where parent = 'America'; 

Here 작은 SQL 바이올린의 예입니다.