Usa el COALESCE() función. COALESCE() toma al menos 2 argumentos, calculados en orden, y devuelve el primer argumento no nulo. Entonces COALESCE(null, 0) devolvería 0 y COALESCE(null, null, null, null, 1) devolvería 1 . Aquí está la documentación de MySQL
sobre COALESCE() .
Al volver a leer su consulta, debería ser capaz de obtener los resultados que desea de esta manera:
SELECT <all the fields you want>, b.songsID, COUNT(*) AS projects_count
FROM $sTable b
LEFT OUTER JOIN $sTable2 bb ON bb.songs_id = b.songsID
$sWhere
GROUP BY b.songsID
$sOrder
$sLimit
Como dije, esto debería funcionar, pero algo al respecto no se siente del todo bien.