postgresql 是否可以在使用Apache-AGE的FROM子句中使用多个cypher调用?

3pvhb19x  于 2023-04-20  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

cypher()函数返回一个关系表,因此cypher调用可以在查询中与其他表一起使用,如下所示:

SELECT *
FROM table1, cypher('cypher_query1');

上面的查询按预期工作。但是,如果我调用cypher函数两次,如:

SELECT *
FROM cypher('cypher_query1'), cypher('cypher_query2');

我得到以下错误:

ERROR:  table name "cypher" specified more than once

有没有变通办法?

b09cbbtk

b09cbbtk1#

所以目前似乎只有1个table和1个Cypher查询可以工作。顺序无关紧要(table,cypher()或cypher(),table)。我不知道这是否是一个有意的设计选择。
至于实际使用,我不明白你在寻找什么是有用的?如果你想在你的查询中访问另一个图,你已经可以用JOIN来做了。

SELECT * FROM cypher('graph1', $$
CREATE (c: Customer { user: 'gomeZ', tags: 'dev' })
$$) as (v agtype);

SELECT * FROM cypher('graph2', $$
CREATE (s: Queries { user: 'gomeZ', keywords: ['java', 'c', 'python'] })
$$) as (v agtype);
SELECT graph1.u, graph1.t, graph2.k         
FROM cypher('graph1', $$
MATCH (c:Customer)
RETURN c.user, c.tags
$$) as graph1(u agtype, t agtype)
JOIN cypher('graph2', $$
MATCH (s:Queries)
RETURN s.user, s.keywords
$$) as graph2(u agtype, k agtype)
ON graph1.u = graph2.u;

相关问题