두 개의 테이블이 있습니다. 첫째 : 블로그 카테고리, 둘째 : 블로그. 표 블로그 카테고리에는 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
count(null value)=0
으로 반환하지 않습니다 경우에 따라서 블로그는 하나 개의 카테고리를 가질 수있다? –예. blogCatID (Int) 필드에 대한 하나의 카테고리 ID입니다. – caglaror
'LEFT JOIN'을'JOIN'으로 변경하십시오. –