Du laver en INNER JOIN, men du har brug for en YDER JOIN, især en LEFT JOIN. Med en LEFT JOIN er tabellen "til venstre" altid sammenføjet, og hvis der ikke er korrespondance, er felterne i tabellen til højre sat til null. Forskellen er forklaret meget godt på denne wikipedia-side .
Derefter skal du gruppere rækkerne med det samme indsendelses-id og tælle, hvor mange rækker der er blevet grupperet, idet du skal passe på, at hvis en indsendelse kun har én kommentar, og en anden ikke har nogen, har de begge 1 grupperet række... Hvis en indsendelse ikke har nogen kommentarer , i den næste forespørgsel c.submissionid
vil være nul, så
Din SQL kunne være
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
Der kan være fejl, jeg har ikke testet forespørgslen... Men jeg håber at have givet dig den rigtige idé, det er forskellen mellem ydre sammenføjninger og indre sammenføjninger.