Creo que quieres una left join
en lugar de una inner join
ya que desea devolver un recuento de 0 en lugar de una fila faltante cuando no hay una c
coincidente registro para un b
dado grabar.
Además, debe incluir un group by
cuando se usa una función agregada, como 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