आप एक इनर जॉइन कर रहे हैं, लेकिन आपको एक बाहरी जॉइन की आवश्यकता है, विशेष रूप से, एक लेफ्ट जॉइन। LEFT JOIN के साथ, "बाईं ओर" तालिका हमेशा जुड़ती है, और यदि कोई पत्राचार नहीं है तो दाईं ओर की तालिका के फ़ील्ड शून्य पर सेट हो जाते हैं। इस अंतर को इस विकिपीडिया पेज में बहुत अच्छे से समझाया गया है ।
फिर आपको पंक्तियों को एक ही सबमिशन आईडी के साथ समूहित करना होगा और गिनना होगा कि कितनी पंक्तियों को समूहीकृत किया गया है, इस बात का ध्यान रखते हुए कि यदि एक सबमिशन में केवल एक टिप्पणी है और दूसरे में कोई नहीं है, तो दोनों में 1 समूहीकृत पंक्ति है ... यदि एक सबमिशन में कोई टिप्पणी नहीं है , अगली क्वेरी में c.submissionid
शून्य होगा, इसलिए
आपका एसक्यूएल हो सकता है
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
त्रुटियां हो सकती हैं, मैंने क्वेरी का परीक्षण नहीं किया है... लेकिन मुझे आशा है कि मैंने आपको सही विचार दिया है, जो बाहरी जुड़ाव और आंतरिक जुड़ाव के बीच का अंतर है।