Je pense que vous voulez une left join
au lieu d'une inner join
puisque vous souhaitez renvoyer un nombre de 0 au lieu d'une ligne manquante lorsqu'il n'y a pas de c
correspondant record pour un b
donné enregistrer.
De plus, vous devez inclure un group by
lors de l'utilisation d'une fonction d'agrégation, telle que 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