Myślę, że chcesz left join
zamiast inner join
ponieważ chcesz zwrócić liczbę 0 zamiast brakującego wiersza, gdy nie ma pasującego c
rekord dla danego b
rekord.
Powinieneś także dołączyć group by
podczas korzystania z funkcji agregującej, takiej jak 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