प्रश्नों में मेरा एकमात्र अनुभव MySQL के साथ है, लेकिन उम्मीद है कि यह काफी समान है।
आपकी क्वेरी मुझे अजीब लगती है क्योंकि आपकी सबक्विरी SELECT क्लॉज में है। मैंने पहले कभी नहीं देखा है ... लेकिन स्पष्ट रूप से यह MySQL में समर्थित है। आमतौर पर सबक्वायरी फॉर या बाएं जॉइन या जॉइन के बाद आता है।
आपका उदाहरण काफी सरल है कि आप इसे एक वाम के साथ लागू कर सकता है शामिल हों:
SELECT C.guid, ..., COUNT(distinct D.id) as numprogs
FROM Computers AS C
LEFT JOIN ComputerData as D ON D.computer_id = C.id
इस मामले में, वाम शामिल हों क्योंकि उपयोग करने के लिए भले ही में कोई मिलता-जुलता रिकॉर्ड है में शामिल होने का सही प्रकार है किसी विशेष सी रिकॉर्ड के लिए डी तालिका, आपके परिणाम सेट में अभी भी शामिल होगा कि सी रिकॉर्ड और numprogs केवल शून्य होंगे, जैसा कि आप उम्मीद करेंगे।
तुम सच में एक सबक्वेरी उपयोग करना चाहते हैं, इस प्रयास करें:
SELECT C.guid, ..., S.numprogs
FROM Computers AS C
LEFT JOIN
(SELECT computer_id, COUNT(*) as numprogs
FROM ComputerData GROUP BY computer_id) AS S
ON C.id=S.computer_id
मैं इसे सरल संभव क्वेरी जो काम करना चाहिए होने के लिए प्राप्त करने के लिए आपकी क्वेरी को सरल बनाने का सुझाव देते हैं, लेकिन काम नहीं करता। फिर हमें एक विशिष्ट त्रुटि संदेश बताएं कि आपका डेटाबेस इंजन लौट रहा है।
संपादित करें: मैंने MySQL chapter about subqueries में देखा था और ऐसा लगता है कि आपको अपने सबक्वायरी के बाद "numprograms" खंड को हटाने का प्रयास करना चाहिए ... शायद आपको कॉलम के नामकरण के बारे में कोई विकल्प नहीं मिलता है subquery पहले से ही subquery बना दिया है।
स्रोत
2009-03-14 08:45:35
त्रुटि क्या है? –
हाय, क्षमा करें, यह तय किया गया है। धन्यवाद सब, अज़ुका – Zahymaka