Правите ININER JOIN, но имате нужда от OUTER JOIN, по-специално, LEFT JOIN. С LEFT JOIN, таблицата "отляво" винаги се присъединява и ако няма съответствие, полетата на таблицата отдясно се задават на null. Разликата е обяснена много добре в тази страницата на уикипедия .
След това трябва да групирате редовете със същия идентификатор на подаване и да преброите колко редове са били групирани, като внимавате, че ако едно подаване има само един коментар, а друго няма никакъв, и двете имат по 1 групиран ред... Ако едно подаване няма коментари , в следващата заявка c.submissionid
ще бъде нула, така че
Вашият SQL може да бъде
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
Може да има грешки, не съм тествал заявката... Но се надявам да съм ви дал правилната идея, това е разликата между външните и вътрешните свързвания.