Postgresql jsonb -> 对 table "mt" 的 FROM 子句条目的引用无效
Postgresql jsonb -> invalid reference to FROM-clause entry for table "mt"
所以我正在尝试内部连接多个表,以便使用名称绑定 jsonb。但是我收到了这个错误。
ERROR: invalid reference to FROM-clause entry for table "mt"
找到下面问题的娱乐fiddle。
SELECT test,jsonb_build_object(
'myData_updated',
json_agg(elems || jsonb_build_object('product_name', po.name))
)
FROM mainTable mt,
jsonb_array_elements(mt.myData) AS heading_elems,
jsonb_array_elements(heading_elems -> 'pItems') AS elems
JOIN products po ON (elems ->> 'pid' )::int = po.pid
INNER JOIN clients client ON client.client_id = mt.client_id
INNER JOIN projects project on project.project_id = mt.project_id
https://dbfiddle.uk/?rdbms=postgres_10&fiddle=63e5b8a49940bb50b5bb7985a947c09e
我已经尝试删除别名,但我仍然遇到同样的错误。快速谷歌搜索说这是由于 JOIN & ", delimited FROM" query
语法
table,
json_array_elements()
是
的快捷方式
table CROSS JOIN LATERAL
json_array_elements()
因此,您使用的 ,
语法是隐式连接。之后,通过使用 INNER JOIN,您将使用显式连接。混合并不总是有效,所以用显式语法替换隐式语法并且它有效。
除此之外,使用的函数 json_agg()
是一个聚合函数,所以如果你想获得其他列,如 test 你必须做一个 GROUP BY
and/or 使用更多的聚合函数这些列。
所以我正在尝试内部连接多个表,以便使用名称绑定 jsonb。但是我收到了这个错误。
ERROR: invalid reference to FROM-clause entry for table "mt"
找到下面问题的娱乐fiddle。
SELECT test,jsonb_build_object(
'myData_updated',
json_agg(elems || jsonb_build_object('product_name', po.name))
)
FROM mainTable mt,
jsonb_array_elements(mt.myData) AS heading_elems,
jsonb_array_elements(heading_elems -> 'pItems') AS elems
JOIN products po ON (elems ->> 'pid' )::int = po.pid
INNER JOIN clients client ON client.client_id = mt.client_id
INNER JOIN projects project on project.project_id = mt.project_id
https://dbfiddle.uk/?rdbms=postgres_10&fiddle=63e5b8a49940bb50b5bb7985a947c09e
我已经尝试删除别名,但我仍然遇到同样的错误。快速谷歌搜索说这是由于 JOIN & ", delimited FROM" query
语法
table,
json_array_elements()
是
的快捷方式table CROSS JOIN LATERAL
json_array_elements()
因此,您使用的 ,
语法是隐式连接。之后,通过使用 INNER JOIN,您将使用显式连接。混合并不总是有效,所以用显式语法替换隐式语法并且它有效。
除此之外,使用的函数 json_agg()
是一个聚合函数,所以如果你想获得其他列,如 test 你必须做一个 GROUP BY
and/or 使用更多的聚合函数这些列。