INNER JOINを実行していますが、OUTER JOIN、特にLEFTJOINが必要です。 LEFT JOINを使用すると、「左側」のテーブルは常に結合され、対応がない場合は、右側のテーブルのフィールドがnullに設定されます。この違いは、このwikipediaページ で非常によく説明されています。 。
次に、同じ送信IDで行をグループ化し、グループ化された行数をカウントする必要があります。一方の送信にコメントが1つだけあり、もう一方にコメントがない場合は、両方に1つのグループ化された行があることに注意してください...1つの送信にコメントがない場合、次のクエリでc.submissionid
nullになるので、
あなたの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
エラーが発生する可能性があります。クエリはテストしていません...しかし、正しいアイデア、つまり外部結合と内部結合の違いをお伝えしたいと思います。