2014-01-07 4 views
1

두 개의 테이블이 있습니다. 첫째 : 블로그 카테고리, 둘째 : 블로그. 표 블로그 카테고리에는 id 및 categoyName 필드가 2 개 있습니다. 이전에 많은 카테고리 이름이 삽입되었습니다. 표 블로그에는 id, blogCatID, header, blog, date fileds가 있습니다. 블로그 테이블에 많은 레코드가 있습니다. 그러나 모든 categoryName이 사용 된 것은 아닙니다. 블로그의 사용 횟수가 나와있는 categoryNames 목록을 얻으려고합니다. categoryName이 블로그에서 사용되지 않으면 0이 필요합니다.MySQL의 두 테이블에서 고유 값의 수를 얻는 방법은 무엇입니까?

다음 쿼리를 사용했습니다. 그러나 categoryNames는 사용되지 않은 경우에도 카운트 번호 1을받습니다.

select blogCatID, count(*) as Number 
from blog 
group by blogCatID 

나중에에이 blogCategories가 사용되지 않는 찾을 수 있습니다 :

select * 
from blogCategories as bc 
where bc.id not in (select blogCatID 
    from blog 
    group by blogCatID) 

다음 목록을 시도

SELECT DISTINCT categoryName, COUNT(*) AS totalBlogCount 
FROM 
    (SELECT bc.categoryName 
    FROM 
     blogCategories bc 
     LEFT JOIN blog b ON bc.id=b.blogCatID) AS tot 
GROUP BY categoryName 
+0

과 같은 0

SELECT bc.categoryName, COUNT(b.blogCatID) AS totalBlogCount FROM blogCategories bc Left JOIN blog b ON bc.id=b.blogCatID GROUP BY categoryName 

count(null value)=0으로 반환하지 않습니다 경우에 따라서 블로그는 하나 개의 카테고리를 가질 수있다? –

+0

예. blogCatID (Int) 필드에 대한 하나의 카테고리 ID입니다. – caglaror

+2

'LEFT JOIN'을'JOIN'으로 변경하십시오. –

답변

2

아래 쿼리는 당신에게 사용의 분류로 카운트를 줄 것이다. 더 사용이 다음 출력 의지

inspirational 5 
technical 2 
political 0 
random 3 
+0

에 의해 블로그 그룹에서 0도없는 경우 선택 blogCatID 에서 필요 나중에 보았다 고마워. 내가 원하는대로 해결해. – caglaror

1
SELECT bc.categoryName, COUNT(*) AS totalBlogCount 
FROM blogCategories bc INNER JOIN blog b ON bc.id=b.blogCatID 
GROUP BY categoryName 
+0

블로그에없는 카테고리의 경우 0이 필요한지 여부에 따라 귀하의 권리 또는 본인 여부가 확실하지 않습니다. :( –

+0

아 그래, 그 생각을하지 않았다; +1 –

2
Select bc.CategoryName, NullIf(bCounts.NumberOfTimesUsed,0) As NumberOfTimesUsedInBlog 
From BlogCategories bc 
Left Join 
(Select blogCatID, Count(*) as NumberOfTimesUsed 
From Blog Group By BlogCatID) bCounts 
On bCounts.BlogCatID = bc.ID 
1

먼저 당신이 사용 blogCatID 계산 의 blogCategories와 b의 사용 횟수 로그 (및 사용하지 않을 경우 0) :

select isnull(b.numb, 0) as num, bc.* 
from blogCategories as bc left join (select blogCatID, count(*) as numb 
    from blog 
    group by blogCatID) as b ON bc.id b.blogCatID 
+0

내가 미안 blogCatID – caglaror

+1

내 SQL 구문이 더 가능성이 MS-SQL ... – Ice

관련 문제