Мисля, че искате left join
вместо inner join
тъй като искате да върнете брой от 0 вместо липсващ ред, когато няма съответстващ c
запис за даден b
запис.
Също така трябва да включите group by
когато използвате агрегатна функция, като count
.
SELECT
b.b_id,
COUNT(DISTINCT c.c_id) AS count
FROM
b
LEFT JOIN c
ON b.b_id=c.b_id
AND c.active='yes'
WHERE b.featured='no'
GROUP BY b.b_id