Tôi có hai bảng employee
và phones
. Một nhân viên có thể có 0 đến n số điện thoại. Tôi muốn liệt kê tên nhân viên với số điện thoại của họ. Tôi đang sử dụng truy vấn dưới đây chạy tốt.
SELECT empname,array_agg(phonenumber) AS phonenumbers
FROM employee LEFT OUTER JOIN phones ON employee.empid = phones.empid
GROUP BY employee.empid
Bảng nhân viên có thể chứa số lượng lớn các hàng. Tôi muốn chỉ lấy một số nhân viên tại một thời điểm. Ví dụ tôi muốn lấy 3 nhân viên bằng số điện thoại của họ. Tôi đang cố gắng để chạy truy vấn này.
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
Nhưng tôi nhận được lỗi này. ERROR: column "employee.empname" must appear in the GROUP BY clause or be used in an aggregate function
Sự khác biệt duy nhất giữa hai truy vấn là tôi đang sử dụng truy vấn phụ ở sau để giới hạn các hàng trước khi tham gia. Làm thế nào để tôi giải quyết lỗi này?