Du gör en INNER JOIN, men du behöver en OUTTER JOIN, i synnerhet en LEFT JOIN. Med en LEFT JOIN är tabellen "till vänster" alltid sammanfogad, och om det inte finns någon korrespondens ställs fälten i tabellen till höger till null. Skillnaden förklaras mycket väl på denna wikipediasida .
Sedan måste du gruppera raderna med samma inlämnings-id och räkna hur många rader som har grupperats, se till att om en inlämning bara har en kommentar och en annan har ingen har de båda en grupperad rad... Om en inlämning inte har några kommentarer , i nästa fråga c.submissionid
kommer att vara null, så
Din SQL kan vara
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
Det kan finnas fel, jag har inte testat frågan... Men jag hoppas att jag har gett dig rätt idé, det är skillnaden mellan yttre skarvar och inre skarvar.