Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays postgreSQL:加入并分组以获得正确的查询结果_Arrays_Postgresql_Join_Group By - Fatal编程技术网

Arrays 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

我是一名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  |  '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