2014-05-17 2 views
0

쉬운 질문입니다. 그러나 대답은 나를 피하는 것입니다. 테이블의 다른 레코드와 다시 관련이있는 "상위"열이있는 단일 테이블이 있습니다. 내가 뭘 하려는지 내 결과에 "HasChild"비트 열이있는 선택 문입니다. 예를 들어 내 표는 다음과 같습니다한다면 :SQL 쿼리 : 결과에 "HasChild"열을 추가하십시오.

 
ID | ParentID 
1 | null 
2 | 1 
3 | 2 
4 | null 
5 | 4 
6 | 1 

을 그리고 나는이 결과를 반환하는 선택을 찾고 있어요 :

 
ID | ParentID | HasChild 
1 | null  | true 
2 | 1  | true 
3 | 2  | false 
4 | null  | true 
5 | 4  | false 
6 | 1  | false 

은 언제나 도움이 크게 감사합니다. 미리 감사드립니다.

+0

그리고 어떤 부모는 아이가있는 경우 정의? – potashin

+1

언제나 그렇습니까? 이것이 첫 번째 질문입니다. :) – GolezTrol

+0

ID가 ParentID 열에 적어도 한 번 나타나면 해당 레코드에 자식이 있습니다. – PowerUnderwhelming

답변

1
select 
    x.ID, 
    x.ParentId, 
    case exists (select 'x' from YourTable y where y.ParentId = x.Id) then 
    true 
    else 
    false 
    end as HasParent 
from 
    YourTable x 

은 아마 당신은 사건을 남길 수 있습니다,하지만 난 모르겠어요 :

select 
    x.ID, 
    x.ParentId, 
    exists (select 'x' from YourTable y where y.ParentId = x.Id) as HasParent 
from 
    YourTable x 
+0

정확히 내가 필요한 것, 빠른 응답을 주셔서 감사합니다. 최소 시간이 지나면 대답으로 받아 들일 것입니다. – PowerUnderwhelming

관련 문제