İki masam var employee
ve phones
. Bir çalışan 0 ila n telefon numarasına sahip olabilir. Çalışan isimlerini telefon numaralarıyla listelemek istiyorum. İyi çalışan aşağıdaki sorguyu kullanıyorum.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
Çalışan tablosu çok sayıda satır içerebilir. Bir seferde sadece bazı çalışanları almak istiyorum. Mesela 3 çalışanını telefon numaralarıyla getirmek istiyorum. Bu sorguyu çalıştırmaya çalışıyorum.
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
Ama bu hatayı alıyorum. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
İki sorgu arasındaki tek fark, katılmadan önce satırları sınırlamak için ikincisinde alt sorgu kullanarak olmasıdır. Bu hatayı nasıl çözebilirim?