열을 선택하고 json_build_object를 사용할 때 PostgreSQL 9.5에 문제가 있습니다. GROUP BY 절에 오류가 있습니다. 이 표는이 표는 다수 -이하위 쿼리를 사용할 때 쿼리에 실패했습니다
Table companie_contact
Colonne | Type
-----------+--------------------------
id | integer
id_c | integer
id_cm | integer
회사의 테이블이 표는 연락처
Table companie
Colonne | Type
-----------+--------------------------
id | integer
name | character varying(255)
의 테이블 인
Table contact
Colonne | Type
-----------+--------------------------
id | integer
lastname | character varying(255)
firstname | character varying(255)
:
나는 세 개의 테이블을 가지고 to-many 관계를 사용하여 회사와의 연결을 연결하고 그 반대의 경우도 마찬가지입니다. 나는이 쿼리를 실행하면
모든
SELECT co.id,
json_build_object(
'lastname', co.lastname,
'firstname', co.firstname) AS contact,
array_agg(c.name) AS companies
FROM companie AS c
INNER JOIN companie_contact AS vs
ON c.id = vs.id_cm
INNER JOIN contact AS co
ON co.id = vs.id_c
GROUP BY co.id;
내가
id | contact | companies
----+----------------------------------------------+-------------
1 | {"lastname" : "some", "firstname" : "one"} | {A,B,D,E,F}
4 | {"lastname" : "some", "firstname" : "two"} | {A}
2 | {"lastname" : "some", "firstname" : "three"} | {B}
얻을 작동하지만 내가보기 또는 아래
-- Imagine that the views are more complex than that
CREATE VIEW view_contact AS SELECT * FROM contact
CREATE VIEW view_companie AS SELECT * FROM companie
SELECT co.id,
json_build_object(
'lastname', co.lastname,
'firstname', co.firstname) AS contact,
array_agg(c.name) AS companies
FROM view_companie AS c
INNER JOIN companie_contact AS vs
ON c.id = vs.id_cm
INNER JOIN view_contact AS co
ON co.id = vs.id_c
GROUP BY co.id;
처럼 하위 쿼리 로 연락처 및 대기업을 교체 할 때 이 오류가 있습니다.
ERROR: column "co.lastname" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT co.id,json_build_object('lastname', co.lastname, 'fi...
나는이 오류가 왜, 내가 웹에 내 특정 문제에 도움을
감사를 해결책을 찾지 못했습니다 모르는
PS : 난 내 영어 죄송합니다
프랑스어
당신이 손에서 작동하지 않는 쿼리가 있습니까? 그것은 오류와 함께 도움이 될 것이지만 다른 사람들은 이미 주어진 사실을 기반으로 이미 대답 할 수 있습니다 ;-) – Dilettant