Arrays postgreSQL:加入并分组以获得正确的查询结果
我是一名postgreSQL新手,我被以下问题困住了 理想的产出将是Arrays postgreSQL:加入并分组以获得正确的查询结果,arrays,postgresql,join,group-by,Arrays,Postgresql,Join,Group By,我是一名postgreSQL新手,我被以下问题困住了 理想的产出将是 id | name | address | description | employees 1 | 'company1' | 'asdf' | 'asdf' | [{id: 1, name: 'Mark'}, {id: 2, name: 'Mark'}, {id: 3, name: 'Steve'}, {id: 4, name: 'Mark'}] 2 ... 3 ... 5 | 'compan
id | name | address | description | employees
1 | 'company1' | 'asdf' | 'asdf' | [{id: 1, name: 'Mark'}, {id: 2, name: 'Mark'}, {id: 3, name: 'Steve'}, {id: 4, name: 'Mark'}]
2 ...
3 ...
5 | 'company5' | 'asdf | 'adsf' | []
我的当前查询(该查询不工作)
共有3个表格:
companies : ID, NAME, ADDRESS, DESCRIPTION
employees : ID, NAME, SALARY, ROLE
companies_employees : EMPLOYEE_ID, COMPANY_ID
(CONSTRAINT companies_employees_employee_fkey FOREIGN KEY(employee_id) REFERENCES employees(id),
CONSTRAINT companies_employees_company_fkey FOREIGN KEY(company_id) REFERENCES companies(id) )
示例表是[
也许“分组方式”不适合使用
请你给我指一下正确的方向好吗?
非常感谢您
您的问题是,您正在按条件显示员工数据并在分组中使用这些数据。这些字段具有唯一值。您只想按公司信息分组:
SELECT
companies.*,json_agg(employees.*) as "employees"
FROM
companies_employees
JOIN companies ON companies_employees.COMPANY_id = companies.ID
JOIN employees ON companies_employees.EMPLOYEE_id = employees.ID
GROUP BY
companies.ID,
companies.NAME,
companies.ADDRESS,
companies.DESCRIPTION
太棒了。这就是我要找的。你救了我一天。谢谢!
SELECT
companies.*,json_agg(employees.*) as "employees"
FROM
companies_employees
JOIN companies ON companies_employees.COMPANY_id = companies.ID
JOIN employees ON companies_employees.EMPLOYEE_id = employees.ID
GROUP BY
companies.ID,
companies.NAME,
companies.ADDRESS,
companies.DESCRIPTION