Provádíte INNER JOIN, ale potřebujete OUTER JOIN, konkrétně LEFT JOIN. S LEFT JOIN je tabulka "vlevo" vždy spojena, a pokud neexistuje žádná korespondence, pole tabulky vpravo jsou nastavena na null. Rozdíl je velmi dobře vysvětlen na této stránce wikipedie .
Poté musíte seskupit řádky se stejným ID příspěvku a spočítat, kolik řádků bylo seskupeno, přičemž dbejte na to, aby pokud jeden příspěvek měl pouze jeden komentář a druhý žádný, oba měly 1 seskupený řádek... Pokud jeden příspěvek nemá žádné komentáře , v dalším dotazu c.submissionid
bude null, takže
Vaše SQL může být
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
Mohou tam být chyby, dotaz jsem netestoval... Ale doufám, že jsem vám dal správnou představu, to je rozdíl mezi vnějšími a vnitřními spojeními.