मेरे पास दो टेबल employee
और हैं phones
। एक कर्मचारी के पास 0 से n फ़ोन नंबर हो सकते हैं। मैं कर्मचारी नामों को उनके फोन नंबरों के साथ सूचीबद्ध करना चाहता हूं। मैं नीचे क्वेरी का उपयोग कर रहा हूं जो ठीक चलता है।
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
कर्मचारी तालिका में बड़ी संख्या में पंक्तियाँ हो सकती हैं। मैं एक बार में केवल कुछ कर्मचारियों को लाना चाहता हूं। उदाहरण के लिए मैं अपने फोन नंबरों के साथ 3 कर्मचारियों को लाना चाहता हूं। मैं इस क्वेरी को चलाने का प्रयास कर रहा हूं।
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM
(SELECT * FROM employee ORDER BY empname LIMIT 3 OFFSET 0) AS employee
LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
लेकिन मुझे यह त्रुटि मिलती है। ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
दो प्रश्नों के बीच एकमात्र अंतर यह है कि मैं शामिल होने से पहले पंक्तियों को सीमित करने के लिए उत्तरार्द्ध में उप क्वेरी का उपयोग कर रहा हूं। मैं इस त्रुटि को कैसे हल करूं?