Saya punya dua meja employee
dan phones
. Seorang karyawan dapat memiliki 0 hingga n nomor telepon. Saya ingin mencantumkan nama karyawan dengan nomor telepon mereka. Saya menggunakan kueri di bawah ini yang berfungsi dengan baik.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
Tabel karyawan mungkin berisi banyak baris. Saya hanya ingin mengambil beberapa karyawan sekaligus. Misalnya saya ingin menjemput 3 karyawan dengan nomor telepon mereka. Saya mencoba menjalankan kueri ini.
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
Tapi saya mendapatkan kesalahan ini. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
Satu-satunya perbedaan antara dua kueri adalah bahwa saya menggunakan sub kueri di yang terakhir untuk membatasi baris sebelum bergabung. Bagaimana cara mengatasi kesalahan ini?