2013-09-25 2 views
0

각 범주의 하위 범주 수를 계산하려면 count 함수를 사용하는 방법을 알아 내려고합니다.SQL Count 하위 범주

내 원래 쿼리 (이름이 범주 이름을 = 경우) 다음과 같습니다

select 
catid, 
name, 
pcatid 
from category 

는 단순히 'SubCategoryCount'라고 (어디 내 DB에 포함되지 않은) 열을 추가하고 싶습니다. 이 열은 각 catid에 대해 pcatid 열이 참조되는 횟수를 계산합니다.

간단한 예를 들어 DB는

catid name  pcatid 
1  Base  NULL 
2  Computers 1 
3  Phones 1 
4  Laptops 2 
5  Dell  4 

것 그리고 난

catid name  pcatid SubCategoryCount 
1  Base  NULL  2 
2  Computers 1   1 
3  Phones 1   0 
4  Laptops 2   1 
5  Dell  4   0 

을 생산하고자하지만 난이 어떻게 achive 것? 당신의 도움이

답변

1

에 대한

덕분에 당신은 하위 범주가없는 경우에도 그래서 테이블의 모든 레코드를 표시합니다 LEFT JOIN를 사용하여 테이블 자체에 가입해야합니다.

  • SELECT a.catid, 
         a.NAME, 
         a.pcatid, 
         COUNT(b.pcatid) SubCategoryCount 
    FROM category a 
         LEFT JOIN category b 
          ON a.catid = b.pcatid 
    GROUP BY a.catid, a.NAME, a.pcatid 
    

    SQLFiddle Demo

PS : 이것은 질의가 테이블의 원래 스키마를 변경하지 않고 단지 결과의 투영이다. 테이블 category에 물리적으로 새 열을 추가하지는 않습니다.