Ho due tavoli employee
e phones
. Un dipendente può avere da 0 a n numeri di telefono. Voglio elencare i nomi dei dipendenti con i loro numeri di telefono. Sto usando la query qui sotto che funziona bene.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
La tabella dei dipendenti potrebbe contenere un numero elevato di righe. Voglio prendere solo alcuni impiegati alla volta. Ad esempio, voglio recuperare 3 dipendenti con i loro numeri di telefono. Sto cercando di eseguire questa query.
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
Ma ho questo errore. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
L'unica differenza tra due query è che sto usando una sub query in quest'ultima per limitare le righe prima di unirmi. Come posso risolvere questo errore?