Anda melakukan INNER JOIN, tetapi Anda memerlukan OUTER JOIN, khususnya, LEFT JOIN. Dengan LEFT JOIN, tabel "di sebelah kiri" selalu digabungkan, dan jika tidak ada korespondensi, bidang tabel di sebelah kanan disetel ke nol. Perbedaannya dijelaskan dengan sangat baik di halaman wikipedia ini .
Kemudian Anda harus mengelompokkan baris dengan id kiriman yang sama dan menghitung berapa banyak baris yang telah dikelompokkan, berhati-hatilah jika satu kiriman hanya memiliki satu komentar dan yang lain tidak memiliki keduanya memiliki 1 baris yang dikelompokkan ... Jika satu kiriman tidak memiliki komentar , dalam kueri berikutnya c.submissionid
akan menjadi nol, jadi
SQL Anda bisa menjadi
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
Mungkin ada kesalahan, saya belum menguji kuerinya... Tapi saya berharap dapat memberi Anda ide yang tepat, yaitu perbedaan antara gabungan luar dan gabungan dalam.