У мене дві таблиці 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
Єдина відмінність двох запитів полягає в тому, що я використовую підзапроси в останньому для обмеження рядків перед приєднанням. Як вирішити цю помилку?