उपयोग करें:
SELECT u.userid,
u.username,
COALESCE(f.numFiles, 0) AS numFiles,
COALESCE(p.numPhotos, 0) AS numFiles,
COALESCE(g.numGroups, 0) AS numGroups
FROM [USER] u
LEFT JOIN (SELECT t.userid,
COUNT(*) AS numFiles
FROM [FILES] t
GROUP BY t.userid)f ON f.userid = u.userid
LEFT JOIN (SELECT t.userid,
COUNT(*) AS numPhotos
FROM [PHOTOS] t
GROUP BY t.userid) p ON p.userid = u.userid
LEFT JOIN (SELECT t.userid,
COUNT(*) AS numGroups
FROM [GROUPS] t
GROUP BY t.userid) g ON g.userid = u.userid
WHERE u.userid = 2
इसके लिए आपको एक प्रश्न में होने के लिए OUTER जॉइन का उपयोग करना होगा; सभी तालिकाओं के लिए INNER शामिल होने के लिए आवश्यक होगा कि उपयोगकर्ता के पास परिणाम में होने के लिए FILES, PHOTOS और GROUPS तालिका में कम से कम एक रिकॉर्ड हो। OUTER जॉइन का मतलब है कि कम से कम एक टेबल (FILES, PHOTOS या GROUPS) में रिकॉर्ड वाले उपयोगकर्ताओं को वापस कर दिया जाएगा।
लेकिन जॉइन भी परिणाम को बढ़ाने का जोखिम उठाते हैं, जो कि मेरे उत्तर के पिछले संस्करण में हुई समस्या है। FILES, GROUPS और PHOTOS काउंट के लिए व्युत्पन्न तालिकाओं/इनलाइन दृश्यों का उपयोग करने के लिए क्वेरी को बदलकर, समस्या हल हो गई है और व्युत्पन्न तालिकाओं/इनलाइन दृश्यों के बाहर GROUP BY की कोई आवश्यकता नहीं है।