Está haciendo una UNIÓN INTERNA, pero necesita una UNIÓN EXTERNA, en particular, una UNIÓN IZQUIERDA. Con un LEFT JOIN, la tabla "a la izquierda" siempre se une, y si no hay correspondencia, los campos de la tabla a la derecha se establecen en nulo. La diferencia se explica muy bien en esta página de wikipedia .
Luego, debe agrupar las filas con la misma identificación de envío y contar cuántas filas se han agrupado, teniendo cuidado de que si un envío tiene solo un comentario y otro no tiene ninguno, ambos tienen 1 fila agrupada ... Si un envío no tiene comentarios , en la siguiente consulta c.submissionid
será nulo, entonces
Su SQL podría ser
SELECT s.loginid, s.title, s.url, s.displayurl, l.username, c.submissionid,
IF(c.submissionid IS NULL, 0, COUNT(*)) AS countComments
FROM submission AS s
INNER JOIN login AS l ON l.loginid = s.loginid
LEFT JOIN comments AS c ON c.submissionid = s.id
GROUP BY (s.id)
ORDER BY s.datesubmitted DESC
LIMIT 10
Puede haber errores, no he probado la consulta... Pero espero haberte dado la idea correcta, esa es la diferencia entre uniones externas e internas.