カラムを選択して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)
:
は、私は3つのテーブルを持っています企業との連絡先をリンクするための多対多の関係(逆もまた同様)私はこのクエリを実行すると
すべて
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;
同様サブクエリ で接触し、companieを交換するときこのエラーが発生しました
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