Ich denke, Sie wollen einen left join
anstelle eines inner join
da Sie anstelle einer fehlenden Zeile eine Zählung von 0 zurückgeben möchten, wenn es keinen übereinstimmenden c
gibt Datensatz für einen gegebenen b
aufnehmen.
Außerdem sollten Sie ein group by
einfügen bei Verwendung einer Aggregatfunktion wie 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