J'ai deux tables employee
et phones
. Un employé peut avoir de 0 à n numéros de téléphone. Je veux lister les noms des employés avec leurs numéros de téléphone. J'utilise la requête ci-dessous qui fonctionne bien.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
La table des employés peut contenir un grand nombre de lignes. Je souhaite récupérer uniquement certains employés à la fois. Par exemple, je veux récupérer 3 employés avec leurs numéros de téléphone. J'essaie d'exécuter cette requête.
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
Mais je reçois cette erreur. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
La seule différence entre deux requêtes est que j'utilise une sous-requête dans cette dernière pour limiter les lignes avant de les rejoindre. Comment résoudre cette erreur?