Jag tror att du vill ha en left join istället för en inner join eftersom du vill returnera ett antal 0 istället för en saknad rad när det inte finns någon matchande c rekord för en given b spela in.
Du bör också inkludera en group by när du använder en aggregerad funktion, såsom 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